我有一个下拉列表,但我的文本值取决于同一模型中的另一个值。
我想要发生的是,如果模型中的行的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')); ?>
甚至可以像这样实现它吗?
答案 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