我正在尝试实现一个依赖下拉列表,在该下拉列表中,它不会从数据库中检索数据,但是,我当然希望将它们的条目保存在我的表中
我试着使用Yii的教程,即。http://www.yiiframework.com/wiki/24/
但正如您所看到的,它正在从表中检索数据,但我希望根据所选值填充一个数组。
public function actionDynamiccities()
{
$data=Location::model()->findAll('parent_id=:parent_id',
array(':parent_id'=>(int) $_POST['country_id']));
$data=CHtml::listData($data,'id','name');
foreach($data as $value=>$name)
{
echo CHtml::tag('option',
array('value'=>$value),CHtml::encode($name),true);
}
请协助
Javascript可能是一个选项,但我该如何以Yii形式实现它。
这是我在给定链接中的示例程序(http://www.yiiframework.com/wiki/24/)
<!-- ===================== My First Dropdown =========== -->
<?php
echo CHtml::dropDownList('country_id', '', array(1 => 'USA', 2 => 'France', 3 => 'Japan'), array(
'ajax' => array(
'type' => 'POST', //My method type
'url' => CController::createUrl('site/CallCities'), //This is my request/ajax URL
array('coountry_id'=>'js:this.value'), //I'm passing the selected dropdonw value.
'dataType' => 'JSON',
'success'=>'js:function(data)' //The functionaliy after success
. '{'
. ' var html="";'
. ' $.each(data,function(i,obj)'
. ' {'
. ' html+="<option value=obj.id>"+obj.name+"</option>"'
. ' });'
. ' $("#city_id").html(html);'
. '}'
)));
?>
<!-- ===================== My Second Dropdown =========== -->
<?php
echo CHtml::dropDownList('city_id', '', array());
?>
而且,我的控制器方法是
public function actionCallCities()
{
$cityId=$_POST['coountry_id'];
$criteria=new CDbCriteria();
$criteria->select=array('id,name');
$criteria->condition='city_id='.$cityId;
$criteria->order='name';
$cityAry= MyCity::model()->findAll($criteria);
$ary=array();
foreach($cityAry as $i=>$obj)
{
$ary[$i]['id']=$obj->id;
$ary[$i]['name']=$obj->name;
}
echo json_encode($ary);
}
我希望,这个示例程序将为您工作