[英]Yii. Dependent Dropdown
我嘗試進行依賴選擇。
我的模特
區域 ID區域
城市編號城市region_id
客戶 ID地區城市地址電話
在我看來(客戶表格):
<div class="row">
<?php
echo $form->dropDownList($model,'region',CHtml::listData(Region::model()->findAll(), 'id', 'region'),
array(
'prompt'=>'Select Region',
'ajax' => array(
'type' => 'POST', //My method type
'url' => CController::createUrl('myController/LoadRegions'), //This is my request/ajax URL
array('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.City_id>"+obj.City_city+"</option>"'
. ' });'
. ' $("#User_City_id").html(html);' //ID of regions dropdown list
. '}'
)));
echo CHtml::dropDownList($model,'City_id', array(), array('prompt'=>'Select City'));
?>
在我的控制器(客戶)中:
public function actionLoadRegions()
{
$Region_id=$_POST['region'];
$criteria=new CDbCriteria();
$criteria->select=array('Region_id, Region_region');
$criteria->condition='Region_id='.$Region_id;
$criteria->order='Region_region';
$RegionAry= Region::model()->findAll($criteria);
$ary=array();
foreach($RegionAry as $i=>$obj)
{
$ary[$i]['Region_id']=$obj->Region_id;
$ary[$i]['Region_region']=$obj->Region_region;
}
echo json_encode($ary);
}
但是代碼不起作用。 客戶類的錯誤對象無法轉換為字符串。 為什么?
這會起作用
您的表格
'success' => 'js:function(data) {
$("#User_City_id").html(data);
}'
您的控制器功能
public function actionLoadRegions()
{
$Region_id=$_POST['region'];
$criteria=new CDbCriteria();
$criteria->select=array('Region_id, Region_region');
$criteria->condition='Region_id='.$Region_id;
$criteria->order='Region_region';
$RegionAry= Region::model()->findAll($criteria);
$ary=array();
foreach($RegionAry as $i=>$obj)
{
$ary[$i]['Region_id']=$obj->Region_id;
$ary[$i]['Region_region']=$obj->Region_region;
}
echo CHtml::dropDownList('dropdown_name', $selected, $ary);
}
我對Yii並不熟悉,但是我認為您將整數變量視為字符串,以使其顯示錯誤。
您確定這一點-
回聲CHtml :: dropDownList($ model,'City_id',array(),array('prompt'=>'Select City'));
試一試
回聲CHtml :: dropDownList($ model,City_id,array(),array('prompt'=>'Select City'));
使用這樣的東西:
echo $form->dropDownList(
$model,
'state_id',
$array,
array(
'class' => 'form-control',
'ajax' => array(
'type' => 'POST',
'url' => $this->createUrl('getregions'),
'update' => '#Customers_region_id',
'data'=>array('state_id'=>'js:this.value')
)
)
); ?>
但您必須在定義dropDownList時更改字段state_id的名稱,更新和url。
也許會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.