如何在控制器中禁用验证规则 - cakephp 2.6.7
How to disable vailidation rule in controller - cakephp 2.6.7
我正在使用 CakePHP 2.6.7。我想禁用对 csv 文件上传的验证。所以就我而言,Disable validation in update form - 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
对象。
All validation rules are stored in a ModelValidator
object, which holds every rule set for each field in your model.
像这样的东西应该可以工作:
public function beforeValidate($options = array()){
if (!empty($this->data[$this->alias]['csv_field'])) { //example
$this->validator()->remove('email');
}
}
我正在使用 CakePHP 2.6.7。我想禁用对 csv 文件上传的验证。所以就我而言,Disable validation in update form - 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
对象。
All validation rules are stored in a
ModelValidator
object, which holds every rule set for each field in your model.
像这样的东西应该可以工作:
public function beforeValidate($options = array()){
if (!empty($this->data[$this->alias]['csv_field'])) { //example
$this->validator()->remove('email');
}
}