我正在使用 CakePHP 2.6.7。我想禁用对 csv 文件上传的验证。因此,就我而言,在更新表单中禁用验证的第一个答案- CakePHP 不适用。我尝试:
$this->validator()->remove('email');
但它不起作用。任何想法?
我正在使用 CakePHP 2.6.7。我想禁用对 csv 文件上传的验证。因此,就我而言,在更新表单中禁用验证的第一个答案- CakePHP 不适用。我尝试:
$this->validator()->remove('email');
但它不起作用。任何想法?
这个对我有用:
unset($this->Customer->validate['email']);
一般来说:
unset($this->Model->validate['validated field']);
也许,可以通过在规则中设置来完成相同的行为,而不是删除验证required=false
规则:
public $validate = array(
'email' => array(
'rule' => array('email', true),
'message' => 'Please supply a valid email address.',
'required' => false
)
);
如果您仍想在运行时删除规则,Model::validate
如果您从控制器调用它,则取消设置数组中的键可能会起作用。但是,您可能希望在表单提交之后和保存之前禁用模型中的字段验证(例如,基于另一个字段的值)。在这个阶段,验证规则已经加载完毕,修改Model::validate
数组是没有效果的。相反,您必须使用该ModelValidator
对象。
所有验证规则都存储在一个
ModelValidator
对象中,该对象包含模型中每个字段的每个规则集。
像这样的东西应该工作:
public function beforeValidate($options = array()){
if (!empty($this->data[$this->alias]['csv_field'])) { //example
$this->validator()->remove('email');
}
}