我对模型字段的默认值有疑问,这个问题让我发疯了一段时间。
举个例子,我有一个带有必须验证的状态字段的模型:
$validate = array (
...
'status' => array(
'list' => array(
'rule' => array('inList', array('0','1')),
'allowEmpty' => true
)
)
)
插入数据库中的数据不是从表单提交的。
如果缺少状态字段,我希望它默认为 1,否则必须进行验证。
有没有办法在不使用自定义验证规则的情况下从模型中做到这一点?我知道我可以在 MySQL 表中设置默认值,但我仍然想从模型中验证它,以防提交不同的值。
编辑
我查看了 Validation 类代码,inList 验证只是 in_array 检查的愚蠢包装:
Cake.Utility.Validation.php
public static function inList($check, $list, $strict = true) {
return in_array($check, $list, $strict);
}
你知道吗,还有一个CakePHP Api docs
($strict)中没有提到的第三个参数,默认为true。
从 in_array 文档:
如果第三个参数 strict 设置为 TRUE,则 in_array() 函数还将检查大海捞针的类型。
它仍然不能解决我的问题,但现在我知道为什么 array('inList', array('0','1')) 没有验证空字段,即使 allowEmpty 设置为 true。
谢谢你。