在yii2

时间:2016-11-07 03:32:28

标签: yii2

我正在尝试在动态表单中使用Select2和depdrop。对于第一行,它只是工作。但是在下一行我遇到了错误。 enter image description here

当我使用没有depfrop的select2时,它可以正常工作。

表格代码(select2和depdrop字段)

<div class="col-xs-3 col-sm-3 col-lg-3">

                                    <?= $form->field($modelsProductsales, "[{$i}]productname")->label(false)->widget(Select2::classname(), [
                                    'data' => ArrayHelper::map(Productbatch::find()->orderBy('productname')->all(),'productname','productname'),
                                    'language' => 'en',
                                    'options' => ['placeholder' => 'Select Product','id' => 'prodname'],
                                    'pluginOptions' => [
                                        'allowClear' => true
                                    ],
                                    ]); 
                                ?>                                  
                                </div>
                                <div class="col-xs-1 col-sm-1 col-lg-1 nopadding">   
                                    <?= $form->field($modelsProductsales, 'batchno')->label(false)->widget(DepDrop::classname(), [
                                    //'options'=>['id'=>'subcat-id'],
                                    'pluginOptions'=>[
                                        'depends'=>['prodname'],
                                        'placeholder'=>'Batch No',
                                        'url'=>Url::to(['/invoice/bills/subcat'])
                                    ]
                                    ]); ?>

子行动守则

public function actionSubcat() {
    $out = [];
    if (isset($_POST['depdrop_parents'])) {
        $parents = $_POST['depdrop_parents'];
        if ($parents != null) {
            $cat_id = $parents[0];
            $out = Productbatch::getBatchNo($cat_id);
            echo Json::encode($out);
            // 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;
        }
    }

如果需要我的结果,请告诉我。

1 个答案:

答案 0 :(得分:1)

检查您的代码,找到第一个正常工作的元素的JavaScript代码。您应该为插入按钮生成的所有相同元素添加JavaScript代码。  我建议您从\wbraganca\dynamicform\DynamicFormWidget为您自己扩展另一个动态表单。然后重写registerAssets函数并为其他插入处理程序添加JavaScripts。