1

我正在使用 CakePHP 2.6.7。我想禁用对 csv 文件上传的验证。因此,就我而言,在更新表单中禁用验证的第一个答案- CakePHP 不适用。我尝试:

$this->validator()->remove('email');  

但它不起作用。任何想法?

4

2 回答 2

4

这个对我有用:

unset($this->Customer->validate['email']);

一般来说:

   unset($this->Model->validate['validated field']); 
于 2015-12-16T20:14:34.857 回答
3

也许,可以通过在规则中设置来完成相同的行为,而不是删除验证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');
    }
}
于 2015-12-16T22:17:20.127 回答