Зависимые списки 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;
}