一个自定义的验证规则是要走的路!
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']);
}
Run Code Online (Sandbox Code Playgroud)
您还可以传递要比较的所有字段的额外参数,并从中生成更通用的功能.
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;
}
Run Code Online (Sandbox Code Playgroud)