CakePHP模型验证,检查1个字段中可能存在的2个文本
我正在对数据库中的town/city字段使用一些简单的验证。这已应用于模型中。正如您可以看到的,城市和城镇这两个字段都要求最小长度为3个字符,并且不能为空 然而,当人们填写此字段的表格时,他们将拥有一个城镇或城市,而不是两者。如何在验证中创建一个检查,以便只需完成其中的一个字段?显然,我不能对这两个字段都“allowEmpty”=>为真,那么我如何实现这一点呢 验证规则:CakePHP模型验证,检查1个字段中可能存在的2个文本,cakephp,cakephp-1.2,Cakephp,Cakephp 1.2,我正在对数据库中的town/city字段使用一些简单的验证。这已应用于模型中。正如您可以看到的,城市和城镇这两个字段都要求最小长度为3个字符,并且不能为空 然而,当人们填写此字段的表格时,他们将拥有一个城镇或城市,而不是两者。如何在验证中创建一个检查,以便只需完成其中的一个字段?显然,我不能对这两个字段都“allowEmpty”=>为真,那么我如何实现这一点呢 验证规则: 'town' => array( 'rule' =>
'town' => array(
'rule' => array('minLength', 3),
'allowEmpty' => false,
'message' => 'Must have town'
) ,
'city' => array(
'rule' => array('minLength', 3),
'allowEmpty' => false,
'message' => 'Must have city'
) ,
有什么建议吗?您可以在AppModel上创建自定义验证规则,如下所示:
function eitherOr(&$data, $orFields = array()) {
foreach ($orFields as $orField => $orValue) {
if (!empty($orValue)) {
unset($this->validationErrors[key($data)]);
}
}
return true;
}
然后,添加到您的验证规则中
var $validate = array(
'town' => array(
'empty' => array(
'rule' => 'allowEmpty'
),
// other rules
),
'city' => array(
// other rules
'eitherOr' => array(
'rule' => array('eitherOr', array('town'))
)
)
);
基本上,它将检查您在第二个参数中传递的字段数组中的值(在本例中,array('town')
将检查town字段。如果该值不为空,它将删除city上的所有验证错误,从而允许其通过。规则需要最后一个,以便删除验证错误。请参阅