質問する
104 次
1 に答える
1
Jeffery Winsett の著書「Yii 1.1 を使用したアジャイル Web アプリケーション開発」では、使用しているモデルでクラス定数を使用する問題を扱っています。あなたの場合:
class Model extends CActiveRecord
{
const GENDER_ANY=0;
const GENDER_MALE=1;
const GENDER_FEMALE=2;
public function getGenderOptions(){
return array(
self::GENDER_ANY=>'Any',
self::GENDER_MALE=>'Male',
self::GENDER_FEMALE=>'Female',
);
}
public function getGenderText(){
$genderOptions=$this->genderOptions();
return isset($genderOptions[$this->gender]) ? $genderOptions[$this->gender] : "unkown gender({$this->gender})";
}
}
次に、 CDetailView で次のように変更する必要がありますgender
。
array(
'name'=>'gender',
'value'=>CHtml::encode($model->genderText()),
),
複数のモデルが同じデータを持つ場合、CActiveRecord を拡張する基本モデルを作成してから、CActiveRecord の代わりに新しいモデルを拡張することができます。このモデルがそのデータを持つ唯一のモデル (つまり、ユーザー モデルは性別のみ) であるが、他のビューがそのモデルを使用してデータを表示する場合、単一のモデル クラスにそのまま残します。またgetGenderOptions
、拡張クラスに配置し、すべてのモデルを拡張すると、すべてのモデルでそのオプションが使用可能になりますが、必要な属性がない可能性があり、チェックしていない場合はエラーがスローされることに注意してください。
とはいえ、それは問題か好みの問題だと思います。好きなように、好きな場所で処理できます。これは私が持っている Yii に関する本の一例にすぎません。
于 2012-11-16T23:46:14.347 に答える