问问题
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 回答