- <?php echo $form->textField($model, 'staff_name',array('class'=>'input','style'=>'width:150px'));
- echo CHtml::ajaxButton('查询',
- $this->createUrl('cost/searchname'),
- array(
- 'type'=>'POST',
- 'update'=>'#Cost_staff_id',
- 'data'=>array('staff_name'=>"js:$('#Cost_staff_name').val()",'YII_CSRF_TOKEN'=>Yii::app()->request->csrfToken),
- ));
- echo CHtml::activeDropDownList($model, 'staff_id',
- Staff::getRealname($model->staff_id),
- array(
- 'empty'=>'请选择',
- )
- ); ?>
Staff模型中的getRealname方法:
[php] view plaincopy
- public static function getRealname($id)
- {
- $result=self::model()->findByPk($id);
- var_dump($result);exit;
- return CHtml::listData($result, 'id', 'realname');
- }
返回的结果为
- array(1) {
- [""]=>
- NULL
- }
采用以下方案,均可得出正确结果:
[php] view plaincopy
- public static function getRealname($id)
- {
- $a=array(
- 'id'=>2,
- 'realname'=>'真实姓名',
- );
- $b=array(
- 'a'=>$a,
- );
- var_dump(CHtml::listData($b, 'id', 'realname'));exit;
- }
[php] view plaincopy
- public static function getRealname($id)
- {
- $result=self::model()->findAllByPk($id);
- return CHtml::listData($result, 'id', 'realname');
- }
总结:
如果是用AR做为数据源,应使用findAll()、findAllByPk()、findAllBySql() ...等所有活动记录。而不能使用find、findByPk()..等仅获取单一活动记录。
如果为数组,该数组为二维数组。