试图填写表格。有两个依赖字段(在第一个表中 - “Departments”,在第二个表中 - “Doctor”。这些字段的数据我也从两个不同的表中获取)。实际上,当我想在第一个dropDownList中选择“Department”时,在第二个dropDownList中,我只需从这个“部门”中选择“Doctors”。我的代码:_form.php
<div class="row">
<?php echo $form->labelEx($model,'deps_id'); ?>
<?php echo $form->dropDownList($model,'deps_id', CHtml::listData(Deps::model()->findAll(), 'id','department'),
array(
'prompt' => 'Choose department',
'value' => '0',
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('/mednotes/selectstaff'),
'update' => '#Mednotes_selectstaffid', //selector to update value
'data' => array('deps_id'=>'js:this.value'),
)
)
);
?>
<?php echo $form->error($model,'deps_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'staff_id'); ?>
<?php echo $form->dropDownList($model, 'staff_id', array('empty'=>'Choose doctor'), CHtml::listData(Staff::model()->findAll(), 'id', 'fullname' )); ?>
<?php echo $form->error($model,'staff_id'); ?>
</div>
我的行动
public function actionSelectStaff()
{
$giatUnit = (!empty($_POST['deps_id'])) ? $_POST['deps_id']: '0';
$data=Staff::model()->findAll('deps_id=:deps_id',
array(':deps_id'=>$giatUnit));
$data=CHtml::listData($data,'id','department');
foreach($data as $value=>$department)
{
echo CHtml::tag('option',array('value'=>$value),CHtml::encode($department),true);
}
}
它不起作用。此外,我在firebug中出现此错误 - 500内部服务器错误 真的需要帮助。告诉我,我做错了什么。感谢。
答案 0 :(得分:0)
首先:获取POST和GET参数最好使用Yii::app()->request
:
$giatUnit = Yii::app()->request->getParam('deps_id', '0');
第二次:如果您希望链接在多台计算机上运行,则需要确保始终使用正确的大小写。我建议你将动作重命名为actionSelectstaff
。否则,请检查CUrlManager::caseSensitive
值(http://www.yiiframework.com/doc/api/1.1/CUrlManager#caseSensitive-detail)
第三次:在actionSelectStaff
操作中,您尝试使用deps_id
字段获取模型:
$data=Staff::model()->findAll('deps_id=:deps_id', array(':deps_id'=>$giatUnit));
您还可以使用listData
和id
字段获取department
:
$data=CHtml::listData($data,'id','department');
这两个字段(department
和deps_id
)是否都在Staff
模型中表示?这很奇怪。