Зависимые списки yii2
Инструкция по созданию зависмых списков в фреймворке Yii2 на примере регионов и городов. При выборе региона, будет происходить подгрузка городов связанных по полю region_id.
1) Для Client в create.php и update.php добавим:
'arr'=>$arr,
2) в _form.php: (тут меняется контроллер и id поля select которому нужно отдать список)
<?= $form->field($model, 'region_id')->dropDownList(yii\helpers\ArrayHelper::map(common\models\Region::find()->all(),'id','name'), [ 'prompt'=>'Выбрать', 'onchange'=>' $.post("/admin/client/lists?id='.'"+$(this).val(), function(data){ $("select#client-city_id").html(data); });', ]) ?> <?= $form->field($model, 'city_id')->dropDownList($arr, [ 'prompt'=>'Выбрать...', ]) ?>
3) В actionCreate:
'arr'=>[],
4) В actionUpdate:
'arr'=> yii\helpers\ArrayHelper::map(\common\models\City::find()->where(['region_id'=>$model->region_id])->all(),'id','name'),
5) В actionLists:
public function actionLists($id){ $data = '<option>Выбрать...</option>'; if($items = City::find()->where(['region_id'=>$id])->all()){ foreach($items as $item){ $data .= "<option value='".$item->id."'>".$item->name."</option>"; } } return $data; }