2016-11-27 67 views
0

我觉得我失踪的depdrop插件的场景1的这个例子的东西,这是代码:

/* 
* 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是未定义的变量,如该变量来自? 假设我有一个模型/控制器的猫,子猫和prod,这些都是相关的。

如果有人能以正确的方式指导我,那将非常有帮助! 感谢

回答

0

Tipically是要在下拉列表中显示

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

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

哦感谢很多关于这一点,在例如一个问题这$ catlist是价值列表自动生成或我需要先写入$ catList = Category :: find() - > all();为了工作? – Rugleh

+0

在我的答案我的意思是,你必须创建自己的$ catList ..你应该知道从哪里获得填充$ catList的值..(你有一个数组?...你有一个ID为id的表,cat.id ?... – scaisEdge