1

ドロップダウン リストがありますが、テキスト値は同じモデルの別の値に依存しています。

私がしたいのは、モデルの行の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')); ?>

このようにそれを達成することさえ可能ですか?

4

1 に答える 1

2

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 < 1.1.13 および/または PHP <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

于 2014-02-09T08:07:46.950 に答える