如果我有验证规则,例如
alphaNumeric' => array(
'rule' => array('alphaNumeric'),
'allowEmpty' => false),
是否需要有一个notEmpty规则?据我所知,allowEmpty被设置为false会将空值视为违反alphaNumeric规则,所以除了我想要定义两个不同的错误消息之外,是否还需要notEmpty规则?
(提出这个问题的另一种方式:是否有一些独立的notEmpty规则提供或必需的单独功能,除了提供单独的自定义消息,我没有看到?)
非常清楚:我理解notEmpty是一个独立的规则,其中allowEmpty是规则的一个属性。那不是我的问题。我的问题是,添加notEmpty规则是否有任何需要或价值(除了它允许你拥有该规则的自定义消息),如果你已经有一个alphaNumeric(或其他类似的)规则,你可以添加allowEmpty = false到?规则与属性的作用有什么不同,除了规则是独立的吗?
答案 0 :(得分:3)
这实际上取决于您正在使用的“其他”规则。
您可以在CakePHP验证实用程序中准确查看每个规则的实际检查内容:
例如,在该文件中,您可以看到alphanumiric检查:
public static function alphaNumeric($check) {
if (is_array($check)) {
extract(self::_defaults($check));
}
if (empty($check) && $check != '0') {
return false;
}
return self::_check($check, '/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/Du');
}
对于字母数字,您可以看到它已经有空检查,因此您不应该还需要allowEmpty => false规则。
最后,就您而言,我在将其添加为单独规则时看到的唯一好处是您可以向用户提供更好的错误消息。
答案 1 :(得分:0)
请阅读...... http://book.cakephp.org/2.0/en/models/model-attributes.html
模型属性允许您设置可以覆盖默认模型行为的属性,上下文中的规则是应用程序的业务逻辑。
您的问题的答案在于以下链接: http://book.cakephp.org/2.0/en/models/data-validation.html#allowempty
实际上你是绝对正确的,如果你有一个你需要应用多个验证的字段,最后一个是非空的,在这种情况下你可以简单地使用allowEmpty => false。 但是,如果您的数据字段只需要一次非空检查验证,那么您应该使用nonEmpty来更好地理解您的代码!
我想我已经明白了......谢谢