2017-02-13 15 views
0

私はDepartropというドロップダウンリストを作成するために、KartikのExtensionを使用しています。Yii2 - depdropで選択した値を表示するにはどうすればいいですか?

マイ依存スキーマRegencies-> District->アクションを作成します村

、オーケーすべて、井戸を実行しているが、時に子供のドロップダウンでの更新アクションは、選択した値を示していません。

ここに私のビューコード:

<?= $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] 
           ] 
          ]) ?> 

そして、ここで私のコントローラ:

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

マイモデル:

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

+0

ブラウザからリクエストログを送信することはできますか? – meysam

+0

@meysamイメージ、レスポンスajaxを追加しました –

+0

Yii2デバッグパネルです。ブラウザコンソールのログを送ってください。 firefoxではCtrl + Shift + Kを押し、ChromeではF12を押してコンソールを表示します。 – meysam

答えて

1

はあなたのビューに追加:「データを' => [$ 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] 
          ] 
         ]) ?> 

ビューでJavaScriptを追加します。

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

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

お手数ですが、

関連する問題