2016-11-27 3 views
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, и они связаны между собой.

Если кто-то может вести меня правильно, это было бы очень полезно! Благодаря

ответ

0

Tipically список значения, которые вы хотите показать в списке

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

или

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

Ooh спасибо за это, еще один вопрос, в данном примере это $ Catlist является генерируется автоматически или мне нужно написать сначала $ catList = Category :: find() -> all(); чтобы работать? – Rugleh

+0

в моем ответе я имею в виду, что вы должны создать свой собственный $ catList .. вы должны знать, откуда вы получите значение для заполнения $ catList .. (у вас есть массив? ... у вас есть таблица с id, cat.id ? ... – scaisEdge

Смежные вопросы