2

我正在尝试在 Yii 中创建一个分页的表单。每个页面用于一组字段。我认为最好的方法是扩展 ActiveRecord 模型并为当前页面添加一个参数。这也允许我用我自己的表单规则覆盖 rules() 方法。

我的问题是,Yii 不允许我们本地扩展模型。我不得不重写 getMetaData() 方法,因为 Yii 自己运行 self::model(get_class($this)) ,这最终破坏了一切。

不仅如此,我还不能使用 findByPk,因为 Yii 严重依赖类名。

我知道大量的工作来完成这项工作,但我想知道我是否遗漏了一些东西。

谢谢,

凯尔

- 编辑 -

我完全明白了,我完全觉得自己很愚蠢。我所要做的就是覆盖 model() 方法以返回当前模型类。

所以:

class MyAr extends CActiveRecord {
    public static function model($class = __CLASS__){return parent::model($class);}
}

class ExtendedForm extends MyAr {
    public static function model($class = __CLASS__){return parent::model($class);}
}

是的……我觉得自己很愚蠢。

4

2 回答 2

3

要扩展 ActiveRecord 模型,只需扩展它!您需要做的就是覆盖模型方法:

class MyAr extends CActiveRecord {
    public static function model($class = __CLASS__){return parent::model($class);}
}

class ExtendedForm extends MyAr {
    public static function model($class = __CLASS__){return parent::model($class);}
}
于 2012-08-07T22:32:30.103 回答
0

模型类是 ActiveRecord 的子类,因此您可以覆盖 ActiveRecord 的一些变量/方法。我的意思是没有必要再扩展 Activerecord...!它在定义模型时被扩展!因此,只需在其中添加您需要的任何内容。当然,这种方式有在每个模型类中手动添加代码的不便之处。如果它太多,并且如果您使用的是 gii,那么您只需修改 gii 用于生成模型的代码模板。

于 2012-08-05T09:09:25.867 回答