Свежайшие Пирожки от CakePHP по-русски

Полнейшее руководство CakePHP 1.2 на русском языке, горячие новости и полезные статьи

Проверка(валидация) данных

Проверка данных является важной частью любого приложения, так как это поможет убедиться в том что данные соответствуют логике приложения. Например, вы хотите проверь, что введенный пароль не менее восьми символов, или убедится что имя пользователя уникально. Определение правил проверки делает этот процесс очень простым.

Очень много разных аспектов в процессе проверки. В этом разделе мы ознакомимся с обработкой со стороны Модели. А именно: что происходит, когда мы вызываем метод save() ваше модели. Для более детально информации, о том как отлавливать и отображать ошибки валидации, загляните в раздел описывающий FormHelper.

Первый шаг проверки данных - это создание правил в Модели. Для этого используйте массив Model::validate в определении Модели, например:

Простой текст
  1. <?php
  2. class User extends AppModel {
  3. var $name = 'User';
  4. var $validate = array();
  5. }
  6. ?>

В этом примере массив $validate пуст, поэтому никакой проверки происходить не будет. Допустим, нам нужно проверить такие поля модели User login, password, email и born. На следующем примере показаны простые правила проверки этих полей:

Простой текст
  1. <?php
  2. class User extends AppModel {
  3. var $name = 'User';
  4. var $validate = array(
  5. 'login' => 'alphaNumeric',
  6. 'email' => 'email',
  7. 'born' => 'date'
  8. );
  9. }
  10. ?>

Последний пример демонстрирует, каким образом добавляются правила проверки. Для поля login допустимы только цифры и буквы, email должен быть валидным, и born также должна быть правильной. Определение правил проверки позволяет CakePHP автоматически показывать сообщения об ошибке, если данные введенные в форме на странице не соответствуют указанным правилам.

CakePHP имеет количество готовых правил проверки и их использование до боли простое. Некоторые из этих правил позволяют проверять emails, URLs, номера кредитных карт - но об этом немного позже.

Вот пример комплексной проверки данных:

Простой текст
  1. <?php
  2. class User extends AppModel {
  3. var $name = 'User';
  4. var $validate = array(
  5. 'login' => array(
  6. 'alphaNumeric' => array(
  7. 'rule' => 'alphaNumeric',
  8. 'required' => true,
  9. 'message' => 'Только цифры и буквы'
  10. ),
  11. 'between' => array(
  12. 'rule' => array('between', 5, 15),
  13. 'message' => 'Длина от 5 до 15 символов'
  14. )
  15. ),
  16. 'password' => array(
  17. 'rule' => array('minLength', '8'),
  18. 'message' => 'Минимум 8 символов'
  19. ),
  20. 'email' => 'email',
  21. 'born' => array(
  22. 'rule' => 'date',
  23. 'message' => 'Введите правильную дату',
  24. 'allowEmpty' => true
  25. )
  26. );
  27. }
  28. ?>

Два правила проверки определены для поля login: оно должно состоять только из цифр и букв, и его длина должны быть от 5 до 15 символов. Поле password должно быть длиной не менее 8 символов. Email должно содержать правильный, и born должно быть правильной датой. Обратите внимание, вы можете добавлять пользовательские сообщения об ошибке, которые будут показываться возле ошибочных полей

Как показывает прошлый пример, одно поле может иметь несколько правил проверки. И если встроенные правила вам не подходят, вы всегда можете добавить свои правила.

Теперь когда мы уже рассмотрели общую картину проверки данных, может перейти к более детальному рассмотрению каждого из типов проверки(простой, одно правило для одного поля и много правил для одного поля.