CakePHP : Manual/CommonTasks/DataValidation

Проверка данных



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

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

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

<?php
class User extends AppModel {  
    var 
$name 'User';
    var 
$validate = array();
}
?>


В примере выше, массив $validate добавлен в модель User, но он не содержит правил валидации. Предположим, что в таблице users есть поля login, password, email, born. В следующем примере показаны несколько простых правил проверки данных, которые применяются к указанным полям:

<?php
class User extends AppModel {
    var 
$name 'User';
    var 
$validate = array(
        
'login' => 'alphaNumeric',
        
'email' => 'email',
        
'born' => 'date'
    
);
}
?>


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

В CakePHP есть много правил контроля данных и использовать их довольно просто. Некоторые встроенные правила позволяют проверять формат электронных адресов, URL и номеров кредитных карт – но детальнее об этом мы расскажем позже.

А сейчас рассмотрим пример с более сложными правилами валидации, который показывает преимущества некоторых из этих встроенных правил:

<?php
class User extends AppModel {
    var 
$name 'User';
    var 
$validate = array(
        
'login' => array(
            
'alphaNumeric' => array(
                
'rule' => 'alphaNumeric',
                
'required' => true,
                
'message' => 'Только буквы и цифры'
                
),
            
'between' => array(
                
'rule' => array('between'515),
                
'message' => 'От 5 до 15 символов'
            
)
        ),
        
'password' => array(
            
'rule' => array('minLength''8'),
            
'message' => 'Минимум 8 символов'
        
),
        
'email' => 'email',
        
'born' => array(
            
'rule' => 'date',
            
'message' => 'Введите корректную дату',
            
'allowEmpty' => true
        
)
    );
}
?>


Два правила определены для логина: он должен содержать только буквы и цифры, и его длина должна быть от 5 до 15 символов. Пароль должен состоять минимум из 8 символов; email – должен быть корректно заданным и born – допустимая дата. Также, обратите внимание, как вы можете определить специальные сообщения для ошибок, которые CakePHP будет использовать, когда эти правила не будут соблюдены.

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

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

<< Стандартные задачи с CakePHP | Простые правила >>