Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual/CommonTasks/DataValidation/OneRulePerField ...
Это старая версия Manual/CommonTasks/DataValidation/OneRulePerField за 2009-03-31 23:10:35..

Одно правило для каждого поля


Этот способ определения позволяет лучше контролировать работу правил валидации. Но перед тем, как мы обсудим это, давайте посмотрим на образец добавления правила для отдельного поля:


<?
var $validate = array(
    
'fieldName1' => array(
        
'rule' => 'ruleName'// или: array('ruleName', 'param1', 'param2' ...)
        
'required' => true,
        
'allowEmpty' => false,
        
'on' => 'create'// или: 'update'
        
'message' => 'Ваше сообщение об ошибке'
    
)
);

?>


Индекс 'rule' обязателен. Если вы установите только 'required' => true, то валидация 
не будет корректно функционировать. Это потому, что 'required' не является правилом.


Как вы видите, каждое поле (в данном случае показано только одно поле) ассоциируется с массивом, который содержит пять индексов: 'rule', 'required', 'allowEmpty', 'on' и 'message'. Давайте ближе познакомимся с этими индексами.



rule


Индекс 'rule' определяет метод валидации и принимает или отдельное значение, или массив. Значением 'rule' может быть имя метода модели, метода встроенного класса Validation, или регулярное выражение. Полный перечень всех встроенных правил смотрите в главе «Встроенные правила валидации».


Если правило не требует параметров, то 'rule' может содержать просто одно значение, например:


<?
var $validate = array(
    
'login' => array(
        
'rule' => 'alphaNumeric'
    
)
);
?>


Если правило требует некоторые параметры (подобные max, min или range), то 'rule' должно быть массивом:


<?
var $validate = array(
    
'password' => array(
        
'rule' => array('minLength'8)
    )
);
?>


Помните, что индекс 'rule' требуется для определения правил на основе массивов.



required


Этому индексу должно быть присвоено значение типа boolean. Если 'required' => true, то поле должно быть представлено в массиве данных. Например, если правило валидации определено таким образом:


<?
var $validate = array(
    
'login' => array(
        
'rule' => 'alphaNumeric',
        
'required' => true
    
)
);
?>


Тогда данные, посланные методу save() должны содержать данные для поля 'login'. Если это не так, то валидация не будет пройдена. Значение по умолчанию для этого индекса – false.


Если индекс 'login' представлен, но сопутствующее значение пустое, 
то валидация пройдет успешно. 'required' => true контролирует только наличие индекса поля.



allowEmpty


Индексу allowEmpty должно быть присвоено значения типа boolean. Если true, то правило валидации будет пропущено, когда значение пустое.


Значение по умолчанию – false, таким образом, правило будет выполняться (это не значит, что валидация не будет пройдена для пустого значения; если определено правило принимать пустые значения, как правильные, то ошибка проверки данных не будет генерироваться).





 
Комментарии
А как передать значение другого поля в качестве параметра? Например если нужно сравнить пароли в двух введенных полях
port-148-adslby-pool47.infonet.by (2011-11-11 14:06:13)
Добавить комментарий:

Файлов нет. [Показать файлы/форму]