YII中CHtml::listData方法第一个参数(models)的使用

public static array listData(array $models, string $valueField, string $textField, string $groupField='')

$models array 模型对象的列表。这个参数也可以是一个关联的数组(例如CDbCommand::queryAll的结果)。

问题描述:

<?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方法:

public static function getRealname($id)
{
	$result=self::model()->findByPk($id);
        var_dump($result);exit;
	return CHtml::listData($result, 'id', 'realname');
}

返回的结果为

array(1) {
  [""]=>
  NULL
}

采用以下方案,均可得出正确结果:

public static function getRealname($id)
{
	$a=array(
		'id'=>2,
		'realname'=>'真实姓名',
	);
	$b=array(
		'a'=>$a,
	);
	var_dump(CHtml::listData($b, 'id', 'realname'));exit;
}

public static function getRealname($id)
{
	$result=self::model()->findAllByPk($id);
	return CHtml::listData($result, 'id', 'realname');
}

总结:

如果是用AR做为数据源,应使用findAll()、findAllByPk()、findAllBySql() ...等所有活动记录。而不能使用find、findByPk()..等仅获取单一活动记录。

如果为数组,该数组为二维数组。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值