0
Я думаю, что я что-то с этим примером сценария 1 в depdrop виджета отсутствует, это код:
/*
* SCENARIO 1: A 3-level nested dependency example
*/
// THE VIEW
use kartik\widgets\DepDrop;
// Parent
echo $form->field($model, 'cat')->dropDownList($catList, ['id'=>'cat-id']);
// Child # 1
echo $form->field($model, 'subcat')->widget(DepDrop::classname(), [
'options'=>['id'=>'subcat-id'],
'pluginOptions'=>[
'depends'=>['cat-id'],
'placeholder'=>'Select...',
'url'=>Url::to(['/site/subcat'])
]
]);
// Child # 2
echo $form->field($model, 'prod')->widget(DepDrop::classname(), [
'pluginOptions'=>[
'depends'=>['cat-id', 'subcat-id'],
'placeholder'=>'Select...',
'url'=>Url::to(['/site/prod'])
]
]);
// THE CONTROLLER
public function actionSubcat() {
$out = [];
if (isset($_POST['depdrop_parents'])) {
$parents = $_POST['depdrop_parents'];
if ($parents != null) {
$cat_id = $parents[0];
$out = self::getSubCatList($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'=>'']);
}
public function actionProd() {
$out = [];
if (isset($_POST['depdrop_parents'])) {
$ids = $_POST['depdrop_parents'];
$cat_id = empty($ids[0]) ? null : $ids[0];
$subcat_id = empty($ids[1]) ? null : $ids[1];
if ($cat_id != null) {
$data = self::getProdList($cat_id, $subcat_id);
/**
* the getProdList function will query the database based on the
* cat_id and sub_cat_id and return an array like below:
* [
* 'out'=>[
* ['id'=>'<prod-id-1>', 'name'=>'<prod-name1>'],
* ['id'=>'<prod_id_2>', 'name'=>'<prod-name2>']
* ],
* 'selected'=>'<prod-id-1>'
* ]
*/
echo Json::encode(['output'=>$data['out'], 'selected'=>$data['selected']]);
return;
}
}
echo Json::encode(['output'=>'', 'selected'=>'']);
}
Всякий раз, когда я пытаюсь это он говорит, что $ Catlist является неопределенной переменной, где это переменная исходит? Предполагая, что у меня есть модель/контроллер cat, sub-cat и prod, и они связаны между собой.
Если кто-то может вести меня правильно, это было бы очень полезно! Благодаря
Ooh спасибо за это, еще один вопрос, в данном примере это $ Catlist является генерируется автоматически или мне нужно написать сначала $ catList = Category :: find() -> all(); чтобы работать? – Rugleh
в моем ответе я имею в виду, что вы должны создать свой собственный $ catList .. вы должны знать, откуда вы получите значение для заполнения $ catList .. (у вас есть массив? ... у вас есть таблица с id, cat.id ? ... – scaisEdge