我正在研究ajax依赖的下拉工作正常,但有一个问题就在那里,依赖于另一个下拉列表的dropdownn有一个提示-----"选择"。但当父下拉列表是选择相关下拉列表中的提示失败并填充相关数据,我希望提示应该出现在那里,用户应该从下拉列表中选择。 现在由difault第一个数据被选中
view form code
<div class="row">
php echo $form->labelEx($model, 'quarter'); ?>
<?php
$options = array(1 => 'First', 2 => 'Second', 3 => 'Third', 4 => 'Fourth');
$curMonth = date("m", time());
$curQuarter = ceil($curMonth/3);
$qr = array();
$qr[$curQuarter] = $options[$curQuarter];
$qr[$curQuarter-1] = $options[$curQuarter-1];
echo $form->dropDownList($model, 'quarter', $qr,array(
'prompt' => 'Select a quarter',
ajax' => array(
'type' => 'POST',
'url' => Yii::app()->controller->createUrl('dynamicProjectUserRoles'),
'update' => '#A2fs_role_id'
)
)) ?>
<?php echo $form->error($model, 'quarter'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model, 'role_id'); ?>
<?php echo $form->dropDownList($model, 'role_id', array(),array(
'prompt' => 'Select a role',
'ajax' =>array(
'type' => 'POST',
'url' => Yii::app()->controller->createUrl('questions'),
'update' => '#ques'
)
)); ?>
<?php echo $form->error($model, 'role_id'); ?>
</div>
//控制器代码
public function actionDynamicProjectUserRoles() {
$project_id = $_POST['A2fs']['project_id'];
$quarter = $_POST['A2fs']['quarter'];
$employee = $_POST['A2fs']['employee_id'];
//$this->pr($project_id);
$id = $this->getEmployeeId($employee);
$conditon = $this->getQuarterDate($quarter);
// find roles of partcular employee
$q = "SELECT role_id FROM employee_project_role WHERE employee_id=$id AND project_id = $project_id and $conditon ";
$cmd = Yii::app()->db->createCommand($q);
//$result = $cmd->queryRow();
$role = $cmd->queryAll();
foreach ($role as $r){
$criteria = new CDbCriteria();
$criteria = array(
'select' => 'role',
'condition' => 'id=:id',
'params' => array(
':id' => $r['role_id']
)
);
$name = Role::model()->find($criteria);
echo CHtml::tag('option',
array(),CHtml::encode($name->role),true);
}
}
答案 0 :(得分:0)
这是它的工作原理 - 它通过给定的ID呈现整个元素。只需添加
echo CHtml::tag('option', array('value' => ''), 'Select a role', true);
前
foreach ($role as $r){
在控制器文件中。