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. jQuery验证,出两个空白领域,至少有一个字段必须填写或两者
- 2. asp.net必填字段验证至少有一个文本框包含文本
- 3. 从3个必填字段验证器中选择至少一个复选框
- 4. 结构化类型必须至少有一个字段c#
- 5. 如何验证以便至少需要1个字段,当第二个字段有两个必填字段时
- 6. 验证至少一个字段是以dhtmlx格式填充
- 7. 煤层验证问题 - 检查至少一个填充字段
- 8. 验证一个必填字段
- 9. jquery验证(至少有一个字段有文字)
- 10. JSF验证必填字段
- 11. 必填字段验证器
- 12. 必填字段验证
- 13. MVC DataAnnotations - 要求填写组中至少有一个字段
- 14. 验证表格php 4个输入,必须填写一个
- 15. asp.net验证文本框 - 至少一个文本框必须有数据
- 16. 用于验证字段的正则表达式:字段必须包含至少2个AlphaNumeric字符
- 17. XSLT 1.0数量字段必须至少有2位小数
- 18. JSF/PrimeFaces:填写至少一个X字段
- 19. 如何验证字段,以便只填写一个字段?
- 20. 欧芹验证器 - 至少需要一个字段
- 21. Spring MVC验证:至少需要一个字段。至少有一个领域需要
- 22. 无法创建表#1113 - 一个表必须至少有一列
- 23. 验证失败nodejs必填字段
- 24. 隔离必填字段验证程序?
- 25. 必填字段验证服务器端
- 26. MVC2 Html.DropDownList与必填字段和验证
- 27. C#Asp.net必填字段验证程序
- 28. 必填字段验证不隐藏
- 29. Asp.net必填字段验证问题
- 30. Crystal报表(必填字段验证)
这是可怕的,我几乎写了完全相同的代码行为线,几天前? – 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