Ich glaube, ich etwas mit diesem Beispiel des Szenarios 1 im depdrop Widget bin fehlt, dann ist dies der Code:
/*
* 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'=>'']);
}
Immer, wenn ich dies versuchen, sagt es, dass die $ catList eine nicht definierte Variable ist, wo das Variable kommen aus? Angenommen, ich habe ein Modell/Controller Katze, Sub-Katze und Prod und diese sind verwandt.
Wenn jemand mich in der richtigen Weise führen kann, wäre es wirklich hilfreich! Dank
dank Ooh viel dafür, eine weitere Frage im Beispiel das $ catlist ist Automatisch generiert oder ich muss zuerst schreiben $ catList = Category :: find() -> all(); um zu arbeiten? – Rugleh
In meiner Antwort meine ich, dass Sie Ihre eigene $ catList erstellen müssen .. Sie sollten wissen, woher Sie den Wert für füllen $ catList .. (Sie haben ein Array? ... Sie haben eine Tabelle mit ID, cat.id ? ... – scaisEdge