chtml :: complex $ textfieldを持つlistdata
-
13-12-2019 - |
質問
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()
);
. 所属していません StackOverflow