2016-11-27 7 views
0

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

Antwort

0

Tipically ist eine Liste der Wert, den Sie in Dropdown-Liste anzeigen möchten

$catList=Category::find()->all(); 

oder

$catList = ['a' => 'Item A', 'b' => 'Item B', 'c' => 'Item C']; 
+0

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

+0

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

Verwandte Themen