3

我想添加一个自定义验证规则,必要时可以在整个应用程序中重复使用。放在哪里最好?

我知道我可以将它们放在 AppModel 中,但它很混乱,并且使用仅偶尔用于验证的方法污染/膨胀 AppModel,我发现我需要在它们前面加上validateUsername,validateCustom等,以使它们与其他方法清晰地组织起来在应用模型中。我觉得在 OOP 结构中有更好的方法来做到这一点。

例如,有没有办法将自定义规则指定为Lib类的静态方法?

例如

应用程序/Lib/Validate.php

class Validate {

    public function username($value) {
        $value = array_shift($value);
        return preg_match('/^[A-Z0-9_-]+$/i', $value);
    }
}

然后在需要时仅在模型中使用规则:

应用程序/模型/MyModel.php

App::uses('Validate', 'Lib');

class MyModel extends AppModel {

    public $validate = array(
        'username' => array(
            'rule' => 'Validate::username',
            'message' => 'Username contains invalid characters'
        )
    );
}
4

1 回答 1

0

你可以用行为来做到这一点。http://book.cakephp.org/2.0/en/models/behaviors.html有一个设置回调可以用来附加验证规则或创建自己的自定义函数。然后,您可以根据需要将行为附加到模型。

于 2013-06-24T21:13:59.123 回答