简体   繁体   English

Yii2-如何在动作更新中显示depdrop子项中的选定值?

[英]Yii2 - How To show selected value in depdrop child on action Update?

I have use Extension from Kartik, for create dependent dropdown, called DepDrop. 我使用了来自Kartik的Extension来创建依赖的下拉菜单,称为DepDrop。

My dependent schema Regencies->District->Villages 我依赖的架构Regencies-> District-> Villages

When Create Action, everything Okay, running wells, but when Update Action, in Child Dropdown don't show Selected value. 创建操作时,一切正常,运行良好,但是当“更新操作”中的“子项下拉列表”中未显示“选定值”。

Here my View Code : 这是我的查看代码:

<?= $form->field($model, 'fk_regencies_id')->dropDownList(ArrayHelper::map(Regencies::find()->all(),'id','name'), ['id'=>'regency_id']);?>

                          <?= Html::hiddenInput($model->fk_districs_id, $model->fk_districs_id, ['id'=>$model->fk_districs_id]) ?>

                          <?= $form->field($model, 'fk_districs_id')->widget(DepDrop::classname(), [

                                'options'=>['id'=>'district-id'],
                                'pluginOptions'=>[
                                    'depends'=>['regency_id'],
                                    'placeholder'=>'Select...',
                                    'url'=>Url::to(['/calonpegawai/district']),
                                    'params'=>[$model->fk_districs_id]
                                ]
                            ]) ?>

And Here My Controller : 还有我的控制器:

public function actionDistrict() {
    $out = [];
if (isset($_POST['depdrop_parents'])) {
    $parents = $_POST['depdrop_parents'];
    if ($parents != null) {
        $regency_id = $parents[0];
        $param1 = null;

        if (!empty($_POST['depdrop_params'])) {
            $params = $_POST['depdrop_params'];
            $param1 = $params[0]; // get the value of input-type-1

        }

        $out = Districts::getDistrictList($regency_id); 
        //$out[1] = ['id'=>$regency_id, 'name'=>$param1];
        $selected = Districts::getDefaultDistrict($param1);
        //$selected[1] = ['id'=>$regency_id, 'name'=>$param1];
        // the getDefaultSubCat function will query the database
        // and return the default sub cat for the cat_id

        echo Json::encode(['output'=>$out, 'selected'=>$selected]);
        return;
    }
}
echo Json::encode(['output'=>'', 'selected'=>'']);
}

My Model : 我的模特:

public function getDistrictList($regency_id)
{
    $data=\backend\models\Districts::find()
       ->where(['regency_id'=>$regency_id])
       ->select(['id','name' ])->asArray()->all();

    return $data;

}
public function getDefaultDistrict($param1)
{
    $data=\backend\models\Districts::find()
       ->where(['id'=>$param1])
       ->select(['id','name' ])->asArray()->all();

    return $data;

}

ajaxresponse ajax响应

Add in your view:'data'=>[$key=>$value]; 在您的视图中添加:'data'=> [$ key => $ value];

<?= $form->field($model, 'fk_regencies_id')->dropDownList(ArrayHelper::map(Regencies::find()->all(),'id','name'), ['id'=>'regency_id']);?>

                      <?= Html::hiddenInput($model->fk_districs_id, $model->fk_districs_id, ['id'=>$model->fk_districs_id]) ?>

                      <?= $form->field($model, 'fk_districs_id')->widget(DepDrop::classname(), [
                            'data' => [$model->fk_regencies_id=>$model->fk_regencies_id],
                            'options'=>['id'=>'district-id'],

                            'pluginOptions'=>[
                                'depends'=>['regency_id'],
                                'placeholder'=>'Select...',
                                'url'=>Url::to(['/calonpegawai/district']),
                                'params'=>[$model->fk_districs_id]
                            ]
                        ]) ?>

Add javascript in your view: 在您的视图中添加javascript:

$script = <<< JS
    $("#regency_id").change(function(){
      $("#district-id").depdrop({
        depends: ['regency_id'],
        url: '/calonpegawai/district'
    });
    }).change();

JS; JS; $this->registerJs($script); $ this-> registerJs($ script);

Hope to help you. 希望对您有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM