Cakephp:AppModel中的通用验证规则?

时间:2013-08-17 22:56:08

标签: validation cakephp

我想知道一般来说验证字段的“最佳”方法是什么。在我的应用程序中,几个表具有始终使用日期选择器窗口小部件输入的日期值。我不想重复验证代码,所以我想做一些事情,比如在AppModel中填充$ validate数组。但它会在具体的模型类中被覆盖。到目前为止我发现的最好的是蛋糕书中的“动态更改验证规则”段落,并以某种方式将该逻辑应用于AppModel,但它看起来有点hacky和un-caky。有人有提示吗? (如果您有疑问,请询问。) 感谢

2 个答案:

答案 0 :(得分:0)

只需将它们命名为不同的 - 可以这么说:

public function validateDateTime() {}

等。这样,您的自定义规则不会编写核心规则,反之亦然。

答案 1 :(得分:0)

我有一些验证规则,我想放入3个模型,不重复相同的代码,这里我做了

在AppModel.php中,使用应该在多个模型中的那些规则定义一些var。

public $validationRules = arra(
  // rules here
);

并在AppModel的构造函数

中为必要的模型添加它们
public function __construct($id = false, $table = null, $ds = null) {
    parent::__construct($id, $table, $ds);

    /**
     * add validation
    */
    if (in_array($this->alias, array('MyModel1', 'MyModel2', 'MyModel3')) ) {
        $this->validate = array_merge($this->validate, $this->validationRules);
    }
}

如果有一些自定义验证函数,那么也可以将它们移动到AppModel.php。