0

我正在做一个 yii web 应用程序,我有一个应该依赖于另一个的下拉列表,我使用 ajax 但是它不起作用。我看过 yii 教程的依赖下拉菜单并到处搜索。 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);
    } }

另外,我将操作添加到访问规则中。任何帮助表示赞赏,在此先感谢您。

4

1 回答 1

0

您将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,但在这种情况下,您必须CHtml::resolveNameIdupdate选项中使用ajax

于 2012-06-06T08:38:46.640 回答