带有复杂$ textField的CHtml :: listData

Kor*_*lis 6 php yii yii-components

我想在模型中使用一些属性作为textField.像这样的东西:

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

这样'attribute1 attribute2 (attribute3)'就会自动转换为正确的属性值.我试过"按原样"编写它'attribute1 attribute2 (attribute3)',并在模型(fullName())中创建一个中间函数,但似乎没有任何效果.

提前致谢.

ceb*_*ebe 11

可以在Model类中创建一个额外的方法.你必须创建一个getter并使用yii magic作为普通属性.

所以你有你的模板:

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

在你的模型中:

public function getFullName()
{
    return $this->attribute1.' '.$this->attribute2.' ('.$this->attribute3.')';
}
Run Code Online (Sandbox Code Playgroud)