yii2中动态形式的Select2和DepDrop [英] Select2 and DepDrop in dynamic form in yii2

查看:18
本文介绍了yii2中动态形式的Select2和DepDrop的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在动态表单中使用 Select2 和 depdrop.对于第一行,它仅起作用.但在下一行我收到以下错误.

当我在没有 depfrop 的情况下使用 select2 时,它工作正常.

表单代码(select2和depdrop字段)

<?= $form->field($modelsProductsales, "[{$i}]productname")->label(false)->widget(Select2::classname(), ['数据' =>ArrayHelper::map(Productbatch::find()->orderBy('productname')->all(),'productname','productname'),'语言' =>'恩','选项' =>['占位符' =>'选择产品','id' =>'产品名称'],'插件选项' =>['允许清除' =>真的],]);?>

<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'],'插件选项'=>['depends'=>['prodname'],'占位符'='批号','url'=>Url::to(['/invoice/bills/subcat'])]]);?>

subcat动作代码

公共函数 actionSubcat() {$out = [];如果(isset($_POST['depdrop_parents'])){$parents = $_POST['depdrop_parents'];如果 ($parents != null) {$cat_id = $parents[0];$out = Productbatch::getBatchNo($cat_id);echo Json::encode($out);//getSubCatList 函数将根据//cat_id 并返回一个如下所示的数组://[//['id'=>'', 'name'=>''],//['id'=>'', 'name'=>'']//]//echo Json::encode(['output'=>$out, 'selected'=>'']);返回;}}

请让我知道是否需要我的任何输入.

解决方案

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

I'm trying to use Select2 and depdrop within a dynamic form. For the first row it's working only. But on the next row I'm getting following error.

When I'm using select2 without depfrop it works fine.

Code of form (of select2 and depdrop field)

<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'])
                                    ]
                                    ]); ?>

Code of subcat action

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;
        }
    }

Please let me know if anymore input from my end is required.

解决方案

check your codes to find JavaScript codes for the first element that works correctly.you should be add JavaScript codes for all same elements that produces by insert button. I suggest you to extended another dynamic form from \wbraganca\dynamicform\DynamicFormWidget for your own.Then override registerAssets function and add JavaScripts for other insert handler.

这篇关于yii2中动态形式的Select2和DepDrop的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆