我正在做一个 yii Web 应用程序我有一个应该依赖于另一个的下拉列表,我使用 ajax,但它不起作用。我看了依赖下拉列表的 Yiii 教程,到处搜索。http://www.yiiframework.com/wiki/24这是我的主要下拉列表:
<div class="row">
<?php echo $form->labelEx($model, 'sourceID'); ?>
<?php
echo $form->dropDownList($model, 'sourceID', CHtml::listData(Sources::model()->findAll(), 'sourceID', 'name'), array('empty' => 'select source'), array(
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('reservations/atest'),
'update' => '#meal'
)
)
);
?>
<?php echo $form->error($model, 'sourceID'); ?>
</div>
这是依赖下拉列表:
<div class="row">
<?php echo $form->labelEx($model, 'meal'); ?>
<?php echo $form->dropDownList($model, 'meal', array()); ?>
<?php echo $form->error($model, 'meal'); ?>
</div>
这是我的控制器操作:
public function actionAtest() {
$data = Sources::model()->findAll();
$data = CHtml::listData($data, 'sourceID', 'name');
foreach ($data as $value => $name) {
echo CHtml::tag('option', array('value' => $value), CHtml::encode($name),true);
} }
此外,我已将该操作添加到访问规则中。任何帮助不胜感激,提前谢谢你。
您将ajax
选项放在htmlOptions
之后。这是修改后的代码
<div class="row">
<?php echo $form->labelEx($model, 'sourceID'); ?>
<?php
echo $form->dropDownList($model, 'sourceID', CHtml::listData(Sources::model()->findAll(), 'sourceID', 'name'), array('empty' => 'select source','ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('reservations/atest'),
'update' => '#meal'
)
)
);
?>
<?php echo $form->error($model, 'sourceID'); ?>
</div>
而不是使用表单下拉列表,对依赖下拉列表使用 CHtml::dropDownList
。
echo CHtml::dropDownList('meal','', array());
您也可以使用CActiveForm::dropDownList
但在这种情况下,您必须在update
选项中使用CHtml::resolveNameId
ajax