2015-12-16 5 views
1

Я использую CakePHP 2.6.7. Я хочу отключить проверку на загрузку CSV-файлов. Так что в моем случае первый ответ Disable validation in update form - CakePHP не применим. Я стараюсь:Как отключить правило vailidation в контроллере - cakephp 2.6.7

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

Но он не работает. Есть идеи?

ответ

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'); 
    } 
} 
2

это работает для меня:

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

В общем:

unset($this->Model->validate['validated field']);