我的控制器中有以下代码:
public function getData($property)
{
$data = array(
'type'=>array(
'PC',
'Laptop'
),
'brand'=>array(
'1'=>array(
'ASUS PC',
'DELL PC',
),
'2'=>array(
'ASUS laptop',
'DELL laptop',
),
);
return $data[$property];
}
在我看来:
<?= $form->dropDownList($model, 'type',$model->getData('type'), array('class' => 'form-control')) ?>
此代码(在视图中)返回类型。(例如,在下拉列表中显示pc和笔记本电脑选项)。
如果用户从第一个下拉菜单(类型)中选择pc选项,我需要开发依赖丢弃,在下拉列表中显示'ASUS PC'和'DELL PC'。我怎么能这样做。
答案 0 :(得分:0)
1)在视图页面中添加两个下拉字段。
<?php echo $form->dropDownList($model, 'type',array('PC'=>'PC','Laptop'=>'Laptops'),
array(
'empty'=>'--Select Product Type---' ,
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('yourcontroller/getData'), //url to call.
'data'=>array('type'=>'js:this.value'),// value to send
'update'=>'#dependent_value', //selector to update
))); ?>
//empty since it will be filled by the other dropdown
<div class="row">
<?php echo CHtml::dropDownList('dependent_value','', array()); ?>
</div>
控制器
public function actionGetData() {
$data = array('type' => array('PC', 'Laptop'), 'brand' => array('1' => array('ASUS PC', 'DELL PC'), '2' => array('ASUS laptop', 'DELL laptop')));
//echo "<pre>";print_r($_POST['type']);die;
if ($_POST['type'] == 'PC') {
$arr = $data['brand'][1];
} elseif ($_POST['type'] == 'Laptop') {
$arr = $data['brand'][2];
} else {
$arr = array();
}
echo CHtml::tag('option', array('value' => $value), CHtml::encode("Select Product Brand--"), true);
foreach ($arr as $value => $name) {
echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
}
}
注意:确保在accessRules中设置访问此操作的权限