我想在模型中使用一些属性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)'
自动转换为正确的属性值。我试过“按原样”('attribute1 attribute2 (attribute3)'
)编写它,并在模型中创建一个中间函数(fullName()
),但似乎没有任何效果。
提前致谢。
答案 0 :(得分:11)
可以在Model类中创建一个额外的方法。您必须创建一个getter并将其with the yii magic用作普通属性。
所以你的模板中有:
$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.')';
}
答案 1 :(得分:1)
如果您的PHP版本大于5.3,那么您可以使用匿名函数:
$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()
);