1
A
回答
6
A custom validation rule是要走的路!
var $validate = array(
'myField1' => array('atLeastOne'),
'myField2' => array('atLeastOne'),
'myField3' => array('atLeastOne'),
'myField4' => array('atLeastOne')
);
function atLeastOne($data) {
return !empty($this->data[$this->name]['myField1'])
|| !empty($this->data[$this->name]['myField2'])
|| !empty($this->data[$this->name]['myField3'])
|| !empty($this->data[$this->name]['myField4']);
}
你也可以传递你想要比较的所有字段的额外参数,并使其更加通用。
var $validate = array(
'myField1' => array('atLeastOne', 'myField2', 'myField3', 'myField4'),
...
);
// just pulled out of thin air (i.e. untested)
function atLeastOne($data) {
$args = func_get_args(); // will contain $data, 'myField2', 'myField3', ...
foreach ($args as $name) {
if (is_array($name)) {
$name = current(array_keys($name));
}
if (!empty($this->data[$this->name][$name])) {
return true;
}
}
return false;
}
0
您可能需要使用beforeValidate()
回调手动实施验证。例如(在你的模型,我们称之为Item
):
function beforeValidate(){
$valid = false;
if(!empty($this->data['Item']['foo'])){
$valid = true;
}
// do that same thing for the other three fields, setting $valid to true if any of the fields has a value.
return $valid && parent::beforeValidate();
}
你也可以做一个比较长的分配是这样,但我觉得这种类型的废话真的很难的阅读:
function beforeValidate(){
$valid = !empty($this->data['Item']['foo']) || !empty($this->data['Item']['bar']) || !empty($this->data['Item']['baz']) || !empty($this->data['Item']['bling'])
return $valid && parent::beforeValidate();
}
祝你好运!
相关问题
- 1. 如何验证淘汰赛js中至少有一个字段必须填写
- 2. jQuery验证,出两个空白领域,至少有一个字段必须填写或两者
- 3. 验证至少要填写一个字段,重力形式
- 4. asp.net必填字段验证至少有一个文本框包含文本
- 5. Bean验证:列表中至少有一个元素必须填充一个字段
- 6. 模型验证 - 必须至少有两个属性之一
- 7. 从3个必填字段验证器中选择至少一个复选框
- 8. CakePHP的数据验证:如果至少一个字段被填充和多个规则没有验证
- 9. 结构化类型必须至少有一个字段c#
- 10. 如何验证以便至少需要1个字段,当第二个字段有两个必填字段时
- 11. 验证一个必填字段
- 12. 煤层验证问题 - 检查至少一个填充字段
- 13. 验证至少一个字段是以dhtmlx格式填充
- 14. jquery验证(至少有一个字段有文字)
- 15. AndroidManifest.xml错误“必须至少有2段”
- 16. ZF2:允许空字段集,但验证是否至少填写了一个
- 17. 必填字段验证
- 18. JSF验证必填字段
- 19. 必填字段验证器
- 20. 验证非必填字段
- 21. 必填字段验证
- 22. 验证表格php 4个输入,必须填写一个
- 23. MVC DataAnnotations - 要求填写组中至少有一个字段
- 24. 检查是否至少有一个输入字段填写jQuery
- 25. 错误:至少必须为HatomEntry设置一个字段
- 26. MVC客户端验证:必须填写两个文本框中的至少一个
- 27. asp.net验证文本框 - 至少一个文本框必须有数据
- 28. 基因敲除验证 - 至少有一个字段有一个值,至少有一个复选框检查
- 29. Rails - 无法验证至少有一个字段为空
- 30. 用于验证字段的正则表达式:字段必须包含至少2个AlphaNumeric字符
这是可怕的,我几乎写了完全相同的代码行为线,几天前? – brndnmg 2009-09-07 05:56:05
只有这么多理智的方法才能做到这一点......) – deceze 2009-09-07 05:57:18
我想说明的是,您需要allowEmpty = null作为所有规则。否则,该规则将被忽略(allowEmpty = true),或者未执行而失败(allowEmpty = false)。如果你不考虑这个问题,它可能会令人困惑:)。 – 2011-06-03 11:25:22