use yii_app\records\BouquetComposition;
use yii_app\records\BouquetCompositionProducts;
use yii_app\records\Products1c;
+use yii_app\records\Products1cNomenclature;
/**
* Контроллер для управления букетами и их составами.
{
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
-
+ $request = Yii::$app->request;
- $products = Products1c::find()
- ->where(['tip' => Products1c::TYPE_PRODUCTS, 'view' => Products1c::IS_VISIBLE])
- ->andWhere(['ilike', 'name', 'роза'])
- ->asArray()
- ->all();
+ $conditions = array_filter([
+ 'tip' => $request->post('tip'),
+ 'color' => $request->post('color'),
+ 'species' => $request->post('species'),
+ 'category' => $request->post('category'),
+ 'size' => $request->post('size'),
+ ]);
+
+ $filters = array_map(fn($field, $value) => Products1cNomenclature::find()->select('id')->where([$field => $value]), array_keys($conditions), $conditions);
+
+ $query = Products1c::find()->where([
+ 'tip' => Products1c::TYPE_PRODUCTS,
+ 'view' => Products1c::IS_VISIBLE,
+ ]);
+
+ if (!empty($filters)) {
+ $query->andWhere(['in', 'id', array_values($filters)]);
+ }
- return ArrayHelper::map($products, 'id', 'name');
+ return ArrayHelper::map($query->asArray()->all(), 'id', 'name');
}
}
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii_app\records\Products1c;
+use yii_app\records\Products1cNomenclature;
/** @var yii\web\View $this */
/** @var yii_app\records\BouquetComposition $model */
+/** @var array|null $availableItems */
+/** @var array|null $selectedItems */
$this->title = 'Три гладиолуса';
$this->params['breadcrumbs'][] = ['label' => 'Букеты', 'url' => ['index']];
<?= Html::tag('div', Html::label('Фильтры'), ['class' => 'fw-bold fs-5 text-center']) ?>
</div>
<div class="row mb-2">
- <?= Html::dropDownList('category', null, [], ['class' => 'form-select', 'prompt' => 'Выберите категорию']) ?>
+ <?= Html::dropDownList('category', null, Products1cNomenclature::find()->select('category')->distinct()->column(), ['class' => 'form-select', 'prompt' => 'Выберите категорию']) ?>
</div>
<div class="row mb-2">
- <?= Html::dropDownList('species', null, [], ['class' => 'form-select', 'prompt' => 'Выберите вид']) ?>
+ <?= Html::dropDownList('species', null, Products1cNomenclature::find()->select('species')->distinct()->column(), ['class' => 'form-select', 'prompt' => 'Выберите вид']) ?>
</div>
<div class="row mb-2">
- <?= Html::dropDownList('type', null, [], ['class' => 'form-select', 'prompt' => 'Выберите тип']) ?>
+ <?= Html::dropDownList('type', null, Products1cNomenclature::find()->select('type_num')->distinct()->column(), ['class' => 'form-select', 'prompt' => 'Выберите тип']) ?>
</div>
<div class="row mb-2">
- <?= Html::dropDownList('size', null, [], ['class' => 'form-select', 'prompt' => 'Выберите размер']) ?>
+ <?= Html::dropDownList('size', null, Products1cNomenclature::find()->select('size')->distinct()->column(), ['class' => 'form-select', 'prompt' => 'Выберите размер']) ?>
</div>
<div class="row mb-3">
- <?= Html::dropDownList('color', null, [], ['class' => 'form-select', 'prompt' => 'Выберите цвет']) ?>
+ <?= Html::dropDownList('color', null, Products1cNomenclature::find()->select('color')->distinct()->column(), ['class' => 'form-select', 'prompt' => 'Выберите цвет']) ?>
</div>
<?= Html::button('Применить', ['class' => 'btn btn-primary w-100 mb-3', 'id' => 'apply-button']) ?>