質問

textFieldとしてモデル内から数属の属性を使用します。このようなもの:

$form->dropDownList(
    $formModel, 
    'ref_attribute', 
    CHtml::listData(
        User::model()->findAll(array('order'=>'attribute1 ASC, attribute2 ASC')), 
        'id', 
        'attribute1 attribute2 (attribute3)'), 
    array()
);
.

では、'attribute1 attribute2 (attribute3)'が自動的に正しい属性値に変換されるようになります。私はそれを「ASとAS」('attribute1 attribute2 (attribute3)')を書いて、モデル内の中間機能を作成しました(fullName())が、何も機能していませんでした。

事前にありがとうございました。

役に立ちましたか?

解決

モデルクラスに追加の方法を作成することで可能です。ゲッターを作成し、それを使用して Yiiが付いています。魔法通常の財産として

あなたのテンプレートにあります:

$form->dropDownList(
    $formModel, 
    'ref_attribute', 
    CHtml::listData(
        User::model()->findAll(array('order'=>'attribute1 ASC, attribute2 ASC')), 
        'id', 
        'fullName'), 
    array()
);
.

とあなたのモデルに:

public function getFullName()
{
    return $this->attribute1.' '.$this->attribute2.' ('.$this->attribute3.')';
}
.

他のヒント

5.3を超えるバージョンのPHPがある場合は、匿名関数を使用できます。

$form->dropDownList(
    $formModel, 
    'ref_attribute', 
    CHtml::listData(
        User::model()->findAll(array('order'=>'attribute1 ASC, attribute2 ASC')), 
        'id', 
        function($model){
            return $model->attribute1.' '.$model->attribute2.' ('.$this->attribute3.')';
        }
    ), 
    array()
);
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top