]);
}
+ /**
+ * Возвращает список подкатегорий для выбранной категории.
+ * @param string $category
+ * @return array JSON-ответ со списком подкатегорий
+ */
+ public function actionGetSubcategories($category)
+ {
+ Yii::$app->response->format = Response::FORMAT_JSON;
+ $subcategories = Products1cNomenclature::find()
+ ->select('subcategory')
+ ->distinct()
+ ->where(['category' => $category])
+ ->orderBy('subcategory')
+ ->asArray()
+ ->all();
+
+ $out = [];
+ foreach ($subcategories as $item) {
+ if (!empty($item['subcategory'])) {
+ $out[] = ['id' => $item['subcategory'], 'name' => $item['subcategory']];
+ }
+ }
+ return $out;
+ }
+
+ /**
+ * Возвращает список видов для выбранной подкатегории.
+ * @param string $subcategory
+ * @return array JSON-ответ со списком видов
+ */
+ public function actionGetSpecies($subcategory)
+ {
+ \Yii::$app->response->format = Response::FORMAT_JSON;
+ $species = Products1cNomenclature::find()
+ ->select('species')
+ ->distinct()
+ ->where(['subcategory' => $subcategory])
+ ->orderBy('species')
+ ->asArray()
+ ->all();
+
+ $out = [];
+ foreach ($species as $item) {
+ if (!empty($item['species'])) {
+ $out[] = ['id' => $item['species'], 'name' => $item['species']];
+ }
+ }
+ return $out;
+ }
+
+
}
<?php ActiveForm::end(); ?>
+ <?php
+ // Регистрируем JavaScript для динамической подгрузки подкатегорий и видов
+ $script = <<< JS
+ // При изменении категории выполняем AJAX-запрос для подгрузки подкатегорий
+ $('#dynamicmodel-category').on('change', function(){
+ var category = $(this).val();
+ $.ajax({
+ url: '/category-plan/get-subcategories',
+ data: {category: category},
+ success: function(data) {
+ var subcat = $('#dynamicmodel-subcategory');
+ subcat.empty();
+ subcat.append('<option value="">Выберите подкатегорию</option>');
+ $.each(data, function(i, item) {
+ subcat.append('<option value="'+item.id+'">'+item.name+'</option>');
+ });
+ // При изменении категории сбрасываем виды
+ var species = $('#dynamicmodel-species');
+ species.empty();
+ species.append('<option value="">Выберите вид товара</option>');
+ }
+ });
+ });
+
+ // При изменении подкатегории выполняем AJAX-запрос для подгрузки видов
+ $('#dynamicmodel-subcategory').on('change', function(){
+ var subcategory = $(this).val();
+ $.ajax({
+ url: '/category-plan/get-species',
+ data: {subcategory: subcategory},
+ success: function(data) {
+ var species = $('#dynamicmodel-species');
+ species.empty();
+ species.append('<option value="">Выберите вид товара</option>');
+ $.each(data, function(i, item) {
+ species.append('<option value="'+item.id+'">'+item.name+'</option>');
+ });
+ }
+ });
+ });
+JS;
+ $this->registerJs($script);
+ ?>
+
<?php if ($result !== null): ?>