Yii2: Использование виджета Kartik Depdrop?

Хорошо, я пытаюсь использовать виджет Kartik Depdrop, все, что я получаю белый раскрывающийся список, который не является значениями, которые не отображаются в зависимом выпадающем списке.

У меня есть модель состояния и модель города, и у меня есть такая настройка.

В _form.php

$catList=ArrayHelper::map(app\models\State::find()->all(), 'id', 'state_name' ); echo $form->field($model, 'state')->dropDownList($catList, ['id'=>'state_name']); echo $form->field($model, 'district_city')->widget(DepDrop::classname(), [ 'options'=>['id'=>'district_city'], 'pluginOptions'=>[ 'depends'=>['state_name'], // the id for cat attribute 'placeholder'=>'Select...', 'url'=> \yii\helpers\Url::to(['patient-entry/subcat']) ] ]); ?> 

Тогда в модели

  public static function getCity($city_id) { $data=\app\models\City::find() ->where(['state_name'=>$city_id]) ->select(['id','city_name'])->asArray()->all(); return $data; } 

Тогда в моем контроллере

 public function actionSubcat() { $out = []; if (isset($_POST['depdrop_parents'])) { $parents = $_POST['depdrop_parents']; if ($parents != null) { $cat_id = $parents[0]; $out = \app\models\PatientEntry::getCity($cat_id); echo Json::encode(['output'=>$out, 'selected'=>'']); return; } } echo Json::encode(['output'=>'', 'selected'=>'']); } 

Когда я выбираю поле состояния, консоль firebug корректно отображает данные:

 {"output":[{"id":"172","city_name":"Along"},{"id":"173","city_name":"Bomdila"},{"id":"174","city_name":"Itanagar"},{"id":"175","city_name":"Naharlagun"},{"id":"176","city_name":"Pasighat"}],"selected":""} 

Выпадающее поле города также показывает, что оно заполнено данными, но только с пробелами.

Что я здесь делаю неправильно?

Благодарю.

    Хорошо, я нашел решение. Весь код в порядке, на самом деле виджет depdrop ищет id пары и name :

     // 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>'] // ] 

    Соответственно, я изменил код в модели

     ->select(['id','city_name'])->asArray()->all(); with ->select(['id','city_name AS name'])->asArray()->all(); 

    Вот и все, и сейчас он работает нормально. Надеюсь, кто-то найдет это полезным.

    Вместо изменения оператора Select вы также можете:

     echo $form->field($model, 'district_city')->widget(DepDrop::classname(), [ 'options'=>['id'=>'district_city'], 'pluginOptions'=>[ //// change default 'nameParam'=>'name' to 'nameParam'=>'city_name', 'depends'=>['state_name'], // the id for cat attribute 'placeholder'=>'Select...', 'url'=> \yii\helpers\Url::to(['patient-entry/subcat']) ] ]); ?> 

    измените 'nameParam' на 'city_name'