依赖性下降yii2

时间:2016-02-18 06:21:08

标签: yii2 yii2-basic-app active-form

我正在尝试在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)enter image description here

2 个答案:

答案 0 :(得分: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; ?>

答案 1 :(得分:0)

如果你启用了漂亮的网址,而没有在网站网址中获取index.php,那么你必须更改后面的帖子操作。

VARSTOCASES /MAKE Y FROM Y1 TO Y70.

如果没有,那么请提一下400错误请求中出现的确切错误