yii中的相关DropDownLists

时间:2015-03-04 10:19:27

标签: php drop-down-menu yii

试图填写表格。有两个依赖字段(在第一个表中 - “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内部服务器错误 真的需要帮助。告诉我,我做错了什么。感谢。

1 个答案:

答案 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));

您还可以使用listDataid字段获取department

$data=CHtml::listData($data,'id','department');

这两个字段(departmentdeps_id)是否都在Staff模型中表示?这很奇怪。

相关问题