<?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()..等仅获取单一活动记录。
如果为数组,该数组为二维数组。