Не работает depdroplist в yii2?

Добрый вечер всем, пытаюсь сделать 2 выпадающих списка которые зависят друг от друга.
Есть 2 таблицы category и sub_category. В таблице category 2 поля id и category(название категории), в таблице sub_category 3 поля id, id_category, sub_category(название под категории). Вот собственно вьюшка

<? $category = Category::find()->all()?>
        <? $category = ArrayHelper::map($category, 'id', 'category');
        $params = ['prompt' => 'Select category']?>
		<?= $form->field($model, 'category')->dropDownList($category, $params) ?>

        <?= $form->field($model, 'sub_category')->widget(DepDrop::classname(),[
            'options' => ['id','sub_category'],
            'pluginOptions' => [
                'depends' => ['id'],
                'placeholder' => 'select',
                'url' => Url::to(['user/sub'])
            ]
        ]) ?>


А тут контроллер

public function getSubCategory($id) { // could be a static func as well
       $sub_category = SubCategory::find()->where(['id_category' => $id])->asArray()->all();
       return ArrayHelper::map($sub_category, 'id', 'sub_category','id_category');
   }
   public function actionsub() {
       $out = [];

       if (isset($_POST['depdrop_parents'])) {
           $parents = $_POST['depdrop_parents'];
           if ($parents != null) {
               $id = $parents[0];
               $out = SubCategory::getSubCategory($id);
               // the getSubCatList function will query the database based on the
               // cat_id and return an array like below:
               // [
               //    ['id'=>'<sub-cat-id-1>', 'name'=>'<sub-cat-name1>'],
               //    ['id'=>'<sub-cat_id_2>', 'name'=>'<sub-cat-name2>']
               // ]
               echo Json::encode(['output'=>$out, 'selected'=>'']);
               return;
           }
       }
       echo Json::encode(['output'=>'', 'selected'=>'']);
   }


Не могу понять в чем ошибка? Страница отображается без ошибок. Как отследить ошибки ajax не знаю(
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Чтобы отследить ошибки ajax в браузере F12, вкладка "сеть".
Или используйте yii\httpclient\debug\HttpClientPanel
Ну и немного форму с действием надо изменить.
Вернее, можно вообще не использовать дополнительный виджет, всё гораздо проще.

p.s. И если Вы используете yii2, то используйте полностью его возможности.
В частности для получения данных из $_POST используйте Yii::$app->request->post().
Проверить, что пришёл ajax используйте Yii::$app->request->isAjax
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы