1

我有一个填充了数据库的下拉列表。它适用于 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');
4

2 回答 2

3

我认为您应该定义fullname为 avirtual attribute并将其用于您的下拉列表。

例如:

我想你有一个模型 Person 包含firstnameand lastname。你可以定义一个virtual attributelike:

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' )
);

我希望它对你有用。

于 2013-11-15T01:44:44.313 回答
1

我使用这种简单的方法在下拉列表中连接属性/字符串。您甚至可以为选项组使用第三个参数。

echo  $form->dropDownListRow($model,'personid',
CHtml::listData(Person::model()->findAll(
array("select"=>"id,concat(firstname ,' ',lastname) as fullname")),
'id', 'fullname'));

在模型类

public $fullname;
于 2014-09-11T17:38:11.173 回答