如何在控制器中禁用验证规则 - 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');
    }
}