1

yii2 basic で依存ドロップダウンを作成しようとしていますが、期待どおりに動作しません。以下は、ドロップダウンを作成するコードです

 <?= $form->field($model,'grp_name')->dropDownList(
        ArrayHelper::map( Maingroup::find()->all(), 'id', 'name'),
        [
            'prompt'=>'Select your group',
            'onchange'=>'   $.post( "index.php?r=memberdetail/lists&id='.'"+$(this).val(), function( data ) {
                                            $( "select#memberdetail-sub_grp" ).html( data );
                                        });'
        ]); ?>
    <?= $form->field($model,'sub_grp')->dropDownList(
        ArrayHelper::map(NewGroup::find()->all(), 'id', 'group_num'),
        [
            'prompt'=>'Select your sub-group',

        ]); ?>

memberdetail コントローラのリスト アクションは

 public function actionLists($id)
    {
        $countsubgroup = NewGroup::find()
            ->where(['group_name' => $id])
            ->count();

        $subgroup = NewGroup::find()
            ->where(['group_name' => $id])
            ->all();

        if ($countsubgroup > 0) {
            foreach ($subgroup as $name) {
                echo "<option value='" . $name->id . "'>" . $name->group_num . "</option>";
            }
        } else {
            echo "<option> - </option>";
        }

    }

実際に起こっているのは、この問題だと思いますが、これは memberdetail コントローラーに行かず、パブリック関数 actionLists($id) を呼び出していないためだと思いますここに画像の説明を入力

4

2 に答える 2

1

依存ドロップダウンを作成する簡単な方法

最初に次のようなフォルダーに作成DependentController.phpしますcontroller

<?php    
namespace app\controllers;
use yii\helpers\Html;
use Yii;

class DependentController extends \yii\web\Controller
{
    public function actionGetsubgroup($id)
    {
        $rows = NewGroup::find()->where(['group_name' => $id])
        ->all(); 
        echo "<option value=''>---Select State---</option>";     
        if(count($rows)>0){
            foreach($rows as $row){
                echo "<option value='$row->id'>$row->group_num</option>";
            }
        }
        else{
            echo "";
        } 
    }
}

あなたの _form.php

<?= $form->field($model,'grp_name')->dropDownList(ArrayHelper::map( Maingroup::find()->all(), 'id', 'name'),
[
   'prompt'=>'Select your group',
   'onchange'=>'$.get( "'.Url::toRoute('dependent/getsubgroup').'", { id: $(this).val() } ).done(function( data ) { $( "#'.Html::getInputId($model,'sub_grp').'" ).html( data ); } );'    
]); ?>

 <?php if(!empty($model,'sub_grp')) : ?>
    <?= $form->field($model,'sub_grp')->dropDownList(ArrayHelper::map(NewGroup::find()->all(), 'id', 'group_num'), ['prompt' => '---Select Sub-Group---']);  ?>
<?php else : ?>
    <?= $form->field($model,'sub_grp')->dropDownList([], ['prompt' => '---Select Sub-Group---']);  ?>
<?php endif; ?>
于 2016-02-18T07:03:56.127 に答える