我对模型字段的默认值有疑问,这个问题让我疯狂了一段时间。
举个例子,我有一个模型,其状态字段必须经过验证:
$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() 函数还将检查大海捞针的类型。
它仍然无法解决我的问题,但现在我知道为什么数组('inList',数组('0','1'))没有验证空字段,即使allowEmpty设置为true。
谢谢。