条件下拉列表Yii中的文本值

时间:2014-02-09 07:24:54

标签: php yii html.dropdownlistfor yii-booster active-form

我有一个下拉列表,但我的文本值取决于同一模型中的另一个值。

我想要发生的是,如果模型中的行的client_type_id值为1,则下拉文本应为company_name,否则它将为first_name }。请参考下面的代码。

<?php echo $form->dropDownListRow($model , 'client_id', CHtml::listData(Client::model()->findAll(), 'id', '$data->client_type_id == 1 ? $data->company_name : $data->first_name')); ?>

甚至可以像这样实现它吗?

1 个答案:

答案 0 :(得分:1)

PHP 5.3+和Yii 1.1.13 +

您可以使用匿名函数:

echo $form->dropDownListRow($model , 'client_id', 
    CHtml::listData(Client::model()->findAll(), 'id', function($data){
        return $data->client_type_id == 1 ? $data->company_name : $data->first_name
    })
);

Yii&lt; 1.1.13和/或PHP&lt; 5.3

您可以使用CActiveRecord::afterFind()方法初始化变量$list_info并将其用作您的字段:

class MyClass extends CActiveRecord{
    public $list_info;
    ...

    public function afterFind(){
        $this->list_info=$this->client_type_id == 1 ? $this->company_name : $this->first_name
    }
}

然后下拉列表变为

$form->dropDownListRow($model , 'client_id', CHtml::listData(
    Client::model()->findAll(), 'id', 'list_info')
);

参考:http://www.yiiframework.com/doc/api/1.1/CHtml#listData-detail