【发布时间】:2015-09-20 20:01:16
【问题描述】:
我有一个模型要求两个字段之一为非空。只要另一个不是,任何一个都可以是空的。我被困在最好的方法上。
我可以防止像这样的 empty 条目:
$validator
->notEmpty('my_field', 'a or b must be non-empty', [$this, 'checkIfAorBisEmpty']);
第三个参数是一个条件函数,它返回true,仅当另一个字段也为空时才强制执行规则。但这只会阻止这样的事情:
$this->Table->newEntity(['a'=>'', 'b'=>'', 'c'='foobar']);`
我也想提防这样的事情:
$this->Table->newEntity(['c'=>'foobar']);`
上面的代码不会阻止这种情况,因为如果键从保存的数据中完全省略,那么它们就没有效果。我不能使用requirePresence,因为根据文档,与 notEmpty 不同,它不支持条件函数。
显然应用程序buidRules() 并没有以同样的方式受到限制,但它们不在newEntity() 上运行。
这样做的正确方法是什么?
【问题讨论】:
标签: php validation cakephp cakephp-3.0