【发布时间】:2014-07-03 08:14:43
【问题描述】:
我是 Yii 框架的新手。我正在制作多个相关的下拉菜单。 岛屿 地区 省份 城市
我有一个岛屿下拉列表,当您选择一个岛屿时,区域下拉列表将被更新,并且只会出现属于该岛屿的区域。省和市也是如此。
现在,我已经完成了群岛。当您选择一个岛时,只会出现属于该岛的区域。我的问题是第二级下降。当我选择区域时,只会出现属于该区域的provides。我已经以与第一个相同的方式和逻辑对其进行了编码,但我没有得到任何输出或错误。我正在使用 Ajax。你能帮助我吗?谢谢
这是我的观点
<div class="row">
<?php echo $form->labelEx($model,'island'); ?>
<?php
echo $form->dropDownList($model,'island',CHtml::listData(Islands::model()->findAll(), 'IslandID', 'IslandName'),
array(
'prompt'=>'Select Island',
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('loadRegions'), //or $this->createUrl('loadcities') if '$this' extends CController
'update'=>'#region', //or 'success' => 'function(data){...handle the data in the way you want...}',
'data'=>array('IslandID'=>'js:this.value'),
))
);
?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'region'); ?>
<?php
/*echo $form->dropDownList($model,'region',CHtml::listData(Regions::model()->findAll(), 'RegionID', 'RegionName'),
array('class'=>'span4 chosen','maxlength'=>20)*/
echo CHtml::dropDownList('region','', array(), array('prompt'=>'Select Region'),
array(
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('loadProvinces'), //or $this->createUrl('loadcities') if '$this' extends CController
'update'=>'#province', //or 'success' => 'function(data){...handle the data in the way you want...}',
'data'=>array('region'=>'js:this.value'),
))
);
?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'province'); ?>
<?php
echo CHtml::dropDownList('province','', array(), array('prompt'=>'Select Province'));
?>
</div>
这是我的控制器
/* Function for dependent dropdown */
public function actionLoadRegions()
{
$data=Regions::model()->findAll('IslandID=:IslandID',
array(':IslandID'=>(int) $_POST['IslandID']));
$data=CHtml::listData($data,'RegionID','RegionName');
foreach($data as $value=>$region)
echo CHtml::tag('option', array('value'=>$value),CHtml::encode($region),true);
}
public function actionLoadProvinces()
{
//var_dump($_POST['region']);
$data=Provinces::model()->findAll('RegionID=:RegionID',
array(':RegionID'=>(int) $_POST['RegionID']));
$data=CHtml::listData($data,'ProvinceID','ProvinceName');
foreach($data as $value=>$province)
echo CHtml::tag('option', array('value'=>$value),CHtml::encode($province),true);
}
我刚刚关注了这个,但是在多个下拉列表中,它似乎不起作用?谢谢!
【问题讨论】:
-
应该有一些错误,如果您使用的是 chrome,只需在开发人员工具窗口的网络选项卡中查看并更改第一个下拉菜单,然后更改第二个... ajax 调用控制器成功或失败将显示跨度>
-
是的。我试过了,但我没有收到任何错误:(
-
在您的区域下拉列表中将
'data'=>array('region'=>'js:this.value')修改为'data'=>array('RegionID'=>'js:this.value') -
我也试过了,但还是不行,也没有错误或任何错误:(
-
codingbin.com/dependent-drop-down-lists-in-yii 如果有帮助,请检查一下
标签: php ajax drop-down-menu yii