]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Получение подкатегорий и видов
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 4 Apr 2025 13:29:08 +0000 (16:29 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 4 Apr 2025 13:29:08 +0000 (16:29 +0300)
erp24/controllers/CategoryPlanController.php
erp24/views/category-plan/show-history-data.php

index fb7fb5a8272e3142f61e89e232d3daf9872dff28..8bf55e87f78976ca2a04c6a417ae0c774d44bc55 100644 (file)
@@ -360,4 +360,55 @@ class CategoryPlanController extends Controller {
         ]);
     }
 
+    /**
+     * Возвращает список подкатегорий для выбранной категории.
+     * @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;
+    }
+
+
 }
index 06de4d2e09d4550aa4b58adffbfa7b958720c73f..4c29a4ef5facf598d65bc6dd09d7377e8b238624 100644 (file)
@@ -51,6 +51,50 @@ use yii_app\records\Products1cNomenclature;
 
     <?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): ?>