我想添加一个自定义验证规则,必要时可以在整个应用程序中重复使用。放在哪里最好?
我知道我可以将它们放在 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'
)
);
}