Не могли бы вы помочь со скриптом?
Делаю связанный список
стран, городов , с помощью
DepDrop .
Вроде все разжевано, но врубиться не могу никак. Необходимо сделать зависимость.
В модели прописаны методы :
public function getCountryList() { // could be a static func as well
$models = \common\models\Country::find()->asArray()->all();
return ArrayHelper::map($models, 'id', 'name_ru');
}
и
public function getCityList() { // could be a static func as well
$models = \common\models\City::find()->asArray()->all();
return ArrayHelper::map($models, 'id', 'name_ru','country_id');
}
Во view вывожу обычным страны:
<?= $form->field($model, 'country')->dropDownList($model->CountryList, ['id'=>'cat-id']) ?>
В следующем поле надо уже с помощью DepDrop:
<?= $form->field($model, 'city')->widget(DepDrop::classname(), [
'options'=>['id'=>'subcat-id'],
'pluginOptions'=>[
'depends'=>['cat-id'],
'placeholder'=>'Select...',
'url'=>Url::to(['/site/subcat'])
]
]);
Так же присутствует контроллер:
public function actionCity() {
$out = [];
if (isset($_POST['depdrop_parents'])) {
$parents = $_POST['depdrop_parents'];
if ($parents != null) {
$cat_id = $parents[0];
$out = self::getCityList($cat_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'=>'']);
}
Вот и не пойму, что куда пихать. 'cat-id', понятно, зависимость, по сути country_id и дальше ступор. Помогите объяснить, пожалуйста