1

データベースが入力されたドロップダウンリストがあります。1 つのキーと 1 つの値で問題なく動作します。しかし、1 つのキーと 2 つの値で動作させるにはどうすればよいでしょうか。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として定義してドロップダウンリストに使用する必要があると思います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' )
);

お役に立てば幸いです。

于 2013-11-15T01:44:44.313 に答える
1

この簡単な方法を使用して、ドロップダウンで属性/文字列を連結しました。オプション グループの 3 番目のパラメーターを使用することもできます。

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 に答える