我正在尝试在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)
答案 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错误请求中出现的确切错误