我有一个填充了数据库的下拉列表。它可以很好地使用1个键和1个值。但是我如何使用1个键和2个值来处理它。这两个值是名字和姓氏。
<?php
$id = Yii::app()->user->id;
$clients = Clients::model()->findAll(array("condition"=>"cId = $id"));
$list = CHtml::listData($clients, 'id', 'fname');
?>
<?php echo $form->labelEx($model,'clientId'); ?>
<?php echo CHtml::dropDownList('clientId', $model, $list, array(
'empty' => 'Select a client',
'class' => 'form-control'
)); ?>
<?php echo $form->error($model,'clientId'); ?>
//needs something like this
$list = CHtml::listData($clients, 'id', 'fname lname');
答案 0 :(得分:2)
我认为您应该将fullname
定义为virtual attribute
并将其用于您的下拉列表。
例如:
我想你有一个模型Person包含firstname
和lastname
。您可以定义virtual attribute
,如:
class Person extends CActiveRecord {
public function getFullName()
{
return $this->firstname . " " . $this->lastname;
}
...
}
在视图中,您可以使用CHtml :: listData,如:
echo $form->dropDownList($model, 'personid',
CHtml::listData( Person::model()->findAll(), 'id', 'fullname' )
);
我希望它对你有用。
答案 1 :(得分:1)
我使用这种简单的方法来记录下拉列表中的属性/字符串。您甚至可以为选项组使用第三个参数。
echo $form->dropDownListRow($model,'personid',
CHtml::listData(Person::model()->findAll(
array("select"=>"id,concat(firstname ,' ',lastname) as fullname")),
'id', 'fullname'));
在模型类
中public $fullname;