繁体   English   中英

在yii中创建相关的下拉列表

[英]create dependent dropdown lists in yii

我是Yii的新手,并且想使用cActive form创建相关的下拉列表,我可以填充第一个下拉列表,但第二个列表不会自动填充

我要做的是,当用户在下拉列表中选择一个州时,第二个下拉列表应该仅自动填充该州的地区。

MT表

state_details

stateid状态名

state_district

id stateid statedistrict

视图

<div class="row">
    <?php echo $form->labelEx($model,'stateDetails'); ?>
    <?php
        echo $form->dropDownList($model,'statename',CHtml::listData(StateDetails::model()->findAll(), 'stateid', 'statename'),
        array(
        'prompt'=>'Select State',
        'ajax' => array(
        'type'=>'POST', 
        'url'=>CController::createUrl('loadStateDistrict'), //or $this->createUrl('loadstatedistrict') if '$this' extends CController
        'update'=>'#statedistrict', //or 'success' => 'function(data){...handle the data in the way you want...}',
        'data'=>array('stateid'=>'js:this.value'),
        ))
    );
    ?>
</div>

    <div class="row">
    <?php echo $form->labelEx($model,'state_district'); ?>
    <?php
        echo CHtml::dropDownList('statedistrict','', array(), array('prompt'=>'Select District'));
    ?>  
</div>

controller
public function actionLoadStateDistrict()
{

   $data=state_district::model()->findAll('stateid=:stateid', 
   array(':stateid'=>(int) $_POST['stateid']));

   $data=CHtml::listData($data,'id','statedistrict');

   foreach($data as $value=>$statedistrict)
   echo CHtml::tag('option', array('value'=>$value),CHtml::encode($statedistrict),true);
}

您的success调用将更新元素#statedistrict_stateid但是由于您直接使用CHtml因此您依赖的下拉列表的ID为statedistrict 您可以使用htmlOptions显式设置ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM