【发布时间】:2014-02-03 16:57:20
【问题描述】:
我想在模型中添加自定义验证规则,以检查两个字段中的至少一个是否不为空。为简单起见,我已将验证减少到此
public $validate = array(
'first' => array(
'oneEmpty' => array(
'rule' => array('maxOneEmpty', 'second'),
'message' => 'At least one must be filled'
)
),
'second' => array(
'oneEmpty' => array(
'rule' => array('maxOneEmpty', 'first'),
'message' => 'At least one must be filled'
)
)
还有其他验证,并且工作正常(但没有一个依赖于另一个字段)。现在,这不成立。我什至将自定义函数修改为
public function maxOneEmpty($check, $notEmptyToo) {
return false;
}
没有运气。如果我尝试保存模型(故意进行错误验证,因此它实际上并没有保存),我在控制器中执行 $this->Model->validationErrors 时会得到这个
Array
(
[House] => Array
(
[third] => Array
(
[0] => Enter a valid option
)
)
)
当很明显first 和second 也应该是错误的。所以模型正在验证,而不是那些字段。
如果我没有在 first 和 second 字段上输入任何值,就会发生这种情况。如果我在 first 字段上放任何东西,它会验证自定义函数(因为返回而给我 false)。但这对我没有用,我需要能够检查至少一个字段是否有值,但如果两者都是空的(并且当实际验证应该返回 false 时)它甚至不会尝试验证.我尝试将required => true 添加到规则中,但没有运气。添加allowEmpty => false 没有意义,所以我什至没有尝试过。
我能想到的另一个选择是在模型的beforeSave 中添加一个检查“验证”的函数,但我希望能够通过验证来做到这一点(所以我不必搞砸使用验证数组来输出我想要的错误消息)。
我不确定我做错了什么...我正在使用saveAll 保存两个模型,但即使我执行简单的save,问题仍然存在。发布表单的结果数组是
Array
(
[House] => Array
(
[first] =>
[second] =>
[third] => t
)
)
以防万一。不确定这里还有哪些其他信息有用,但请告诉我。提前致谢。
(使用 cakephp 2.4.4)
【问题讨论】:
标签: cakephp cakephp-2.4