Drop down menu yii设置从其他dropdownlist中选择的dropdownlist
我有4个dropdownlist,1个dropdownlist作为主控来控制3个dropdownlist,这是我的主控dropdownlist示例代码Drop down menu yii设置从其他dropdownlist中选择的dropdownlist,drop-down-menu,yii,Drop Down Menu,Yii,我有4个dropdownlist,1个dropdownlist作为主控来控制3个dropdownlist,这是我的主控dropdownlist示例代码 <div class="row"> <?php echo $form->labelEx($truck,'Truck'); ?> <?php echo CHtml::dropDownList('idt',$truck->idt,CHtml::listData(Truck::m
<div class="row">
<?php echo $form->labelEx($truck,'Truck'); ?>
<?php echo CHtml::dropDownList('idt',$truck->idt,CHtml::listData(Truck::model()->findAll(),'idt','number'),
array(
'value'=>'1',
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('FindTruck'),
'data'=>array('idt'=>'js:this.value'),
'dataType'=>'html',
))); ?>
</div>
<div class="row">
<?php echo $form->labelEx($employee,'Driver'); ?>
<?php echo CHtml::dropDownList('driver','$variable',CHtml::listData(Employe::model()->findAll(),'ide','name')); ?>
</div>
这是我的控制器
public function actionFindTruck() {
echo "<script>setDriver('driver',3);</script>"; // test satatic data
}
公共函数actionFindTruck(){
echo“setDriver('driver',3);”;//测试数据
}
问题是我必须在控制器(ActionFindTruck)上写什么代码才能更改上面$variable的值,因此如果我更改卡车,驾驶员将被更改为选中。谢谢您的帮助。我就是这样做的,您应该能够根据您的环境更改值:
public function actionUpdateDropdown()
{
// ajax function to retrieve categories by country:
$lang_id = (!empty($_POST['feature']['language_id'])) ? $_POST['feature']['language_id'] : DEFAULT_LANG_ID;
$data = category::model()->findAll('language_id=:parent_id',
array(':parent_id'=>(int) $lang_id));
$data = CHtml::listData($data,'id','name');
if (!empty($data)) { echo '<option value="">Select Category...</option>'; }
foreach($data as $value=>$name) {
echo CHtml::tag('option',
array('value'=>$value),CHtml::encode($name),true);
}
}
公共函数actionUpdateDropdown()
{
//用于按国家检索类别的ajax函数:
$lang\u id=(!empty($\u POST['feature']['language\u id'])?$\u POST['feature']['language\u id']:默认语言id;
$data=category::model()->findAll('language\u id=:parent\u id',
数组(':parent_id'=>(int)$lang_id));
$data=CHtml::listData($data,'id','name');
如果(!empty($data)){echo'选择类别…';}
foreach($value=>$name形式的数据){
echo CHtml::标记('选项',
数组('value'=>$value),CHtml::encode($name),true);
}
}
关于在这个URL上创建相关下拉列表,有一个很好的讨论:
感谢lgd,这只是从所选语言显示类别的下拉列表,未选择类别,并在类别下拉列表上显示新内容?在我的代码中,内容不会更改,也不会重新加载,如果卡车已选择,则仅选择一名驾驶员,因此控制器仅从默认情况下的IDTruck中获取IDDriver。您对此有何想法?在这种情况下,您可以简单地传回一些javascript,并将jquery/ajax数据类型属性指定为“html”或“脚本”。您可以返回完整函数或函数调用,因此控制器返回代码如下:
echo'syncDriver('.$truck_id');'代码>从控制器函数中获取$truck\u id,“syncDriver”是一个预加载的javascript函数。你可以抽象一个函数来更新各种下拉列表。嗨,lgd,我是一个新手:),你能写简单的代码吗,比如如果在卡车上我选择idt=2,控制器我用idt=2查询司机,那么ex iddriver=5,所以DROPDOLLIST at driver将选择值=5。非常感谢您的帮助。嗨,lgd,我已经成功地尝试使用javascipt,但是当我使用echo“setDriver('driver',3);”从控制器解析时;此代码在'ajax'=>数组()中不工作添加'dataType'=>'html'
public function actionUpdateDropdown()
{
// ajax function to retrieve categories by country:
$lang_id = (!empty($_POST['feature']['language_id'])) ? $_POST['feature']['language_id'] : DEFAULT_LANG_ID;
$data = category::model()->findAll('language_id=:parent_id',
array(':parent_id'=>(int) $lang_id));
$data = CHtml::listData($data,'id','name');
if (!empty($data)) { echo '<option value="">Select Category...</option>'; }
foreach($data as $value=>$name) {
echo CHtml::tag('option',
array('value'=>$value),CHtml::encode($name),true);
}
}