- Определяем, чтобы дата в формате mm/dd/yyyy была в будущем
- Валидируем время в формате g:i a (10:05 am)
- Валидируем чтобы дата окончания была больше начальной даты (endDate > startDate)
- Пароль должен содержать хотя бы 1 заглавную букву и хотя бы 1 цифру
- Пароль должен содержать хотя бы 1 заглавную букву и хотя бы 1 цифру
- Пароль должен содержать хотя бы 1 заглавную букву и хотя бы 1 цифру
- Исключение валидации для определенных сценариев
- Исключение валидации для определенных сценариев
- Уникальность с условием
- Работа с внешними ключами
- List Item Определяем, чтобы дата в формате mm/dd/yyyy была в будущем
array('startDate, endDate', 'date', 'format' => 'MM/dd/yyyy'), array('startDate, endDate', 'compare', 'compareValue' => date('m/d/Y'), 'operator' => '>=', 'message'=>'{attribute} must be later or equal than Now.'),
- Валидируем время в формате g:i a (10:05 am)
array('startTime, endTime', 'date', 'allowEmpty' => true, 'format' => 'M:m a'),
- Валидируем чтобы дата окончания была больше начальной даты (endDate > startDate)
array('startDate', 'ext.validators.dateCompare.EDateCompare', 'dateFormat' => 'm/d/Y', 'compareAttribute' => 'endDate', 'operator' => '<=', 'message' => 'Start date must be before end date.' ), array('endDate', 'ext.validators.dateCompare.EDateCompare', 'dateFormat' => 'm/d/Y', 'compareAttribute' => 'startDate', 'operator' => '>=', 'message' => 'End date must be after start date.' ),
- Пароль должен содержать хотя бы 1 заглавную букву и хотя бы 1 цифру
array('password', 'match', 'pattern'=>'/[A-Z]{1}/', 'message' => 'Password must contain at least 1 capital letter.'), array('password', 'match', 'pattern'=>'/\d+/', 'message' => 'Password must contain at least 1 number.'),
- array('password', 'match', 'pattern'=>'/[A-Z]{1}/', 'message' => 'Password must contain at least 1 capital letter.'), array('password', 'match', 'pattern'=>'/\d+/', 'message' => 'Password must contain at least 1 number.'),
public static function getOptions() { return array( self::GENDER_FEMALE=>'Female', self::GENDER_MALE=>'Male', self::GENDER_NONE=>'None', ); } И валидация: array('gender', 'in', 'range'=>array_keys(self::getOptions()))
- Устанавливаем значение по-умолчанию.
Валидация не производится, а просто задается значение. Используется при $model->save() или $model->validate() array('user_id', 'default', 'value'=>Yii::app()->user->id),
- Исключение валидации для определенных сценариев
array( 'first_name, last_name, primary_phone, address1, country_id, state_id, email', 'required', 'except' => array('register'), ),
- Поля first_name, last_name, middle_name должны содержать только текст
rray('first_name, last_name, middle_name', 'match', 'pattern'=>'/[a-zA-Z]+$/s', 'message'=>'Must contains only letters.'),
- Уникальность с условием
Проверяем уникальность имени при условии что owner_id = id-добавляющего имя пользователя. Получаем что пользователь не может добавить одинаковые имена. array('name', 'unique', 'criteria'=>array( 'condition'=>'owner_id=:owner_id', 'params'=>array(':owner_id'=>Yii::app()->user->id)), ),
- Работа с внешними ключами
Значения полей from_id и to_id должны существовать как значения атрибута id в моделе User. В данном случае form_id и to_id - внешние ключи. 'exists', 'className' => 'User', 'attributeName' => 'id')
23 comments
Leave a Comment