Как мне использовать beforeValidate () в CakePHP? - PullRequest
4 голосов
/ 24 января 2011

У меня есть форма с полем URL. Значение по умолчанию для этого поля: http: //. Но поле не обязательно. Пользователь может пропустить его и отправить форму. Он не должен возвращать ошибку, потому что это не требуется и потому что они не вводили URL. Но сейчас это происходит из-за http: //.

Я слышал, что могу использовать beforeValidate (), чтобы проверить, является ли он http://,, а затем очистить поле URL, позволяя пропустить сообщение об ошибке.

Но я не знаю, как использовать beforeValidate (). Я искал Google, но я не нашел никаких рабочих примеров. Где я могу разместить код для beforeValidate ()? Это функция? Как мне получить доступ к отправленным данным формы оттуда?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 25 января 2011

Да, beforeValidate () является функцией модели. Так что у каждой модели есть. Как вы должны его использовать:

class YourModel extends AppModel {
   function beforeValidate(){
      if($this->data['YourModel']['url_field'] == 'http://'){
         unset($this->data['YourModel']['url_field']);
      }
      return true; //this is required, otherwise validation will always fail
   }
}
2 голосов
/ 26 января 2011

вместо жесткого кодирования http: // в форму, добавьте правильную проверку для URL и используйте следующее, чтобы разрешить пропуски

'allowEmpty' => true

...