Як працює валідація
Клас CModel використовує метод [CModel :: rules ()] для завдання правил валідації.
Правила повертаються у вигляді масиву:
Наведений код - приклад того, як може бути реалізований метод [CModel :: rules ()].
Кожен з внутрішніх масивів визначає своє правило валідації.
вибір валідаторів
Yii шукає валідатор в певному порядку:
- Метод моделі з тим же ім'ям, що зазначено в масиві.
- Вбудований валідатор Yii, успадкований від CValidator.
- Шлях або псевдонім, який вказує на свій валідатор, успадкований від CValidator.
стандартні параметри
- список полів моделі: поля моделі для валідації, розділені комами;
- валідатор: визначає, який валідатор використовувати;
- on: визначає сценарій, для якого проводиться валідація. При вказівці декількох
сценаріїв, вони розділяються комами. Якщо параметр не заданий, правило застосовується для всіх
сценаріїв; - except: визначає сценарій, при якому вказане правило валідації ігнорується. При вказівці декількох
сценаріїв, вони розділяються комами. - message: повідомлення, видатне при помилку валідації;
- ... параметри валідації ...: один або кілька додаткових параметрів, що передаються вказаною валідатора.
Стандартні правила валідації
boolean. CBooleanValidator. перевірять, що значення змінної дорівнює trueValue або falseValue.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- falseValue, значення falseValue.
- strict, чи є порівняння суворим: повинні збігатися не тільки значення, але і їх тип.
- trueValue, значення trueValue.
captcha. CCaptchaValidator. перевіряє, що значення поля моделі відповідає перевірочного
коду CAPTCHA.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- captchaAction, ID дії, що показує зображення CAPTCHA.
- caseSensitive, чи використовувати чутливі до регістру перевірку.
compare. CCompareValidator. порівнює значення зазначеного поля моделі з значенням іншого
поля і перевіряє, чи рівні вони.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- compareAttribute, ім'я атрибута, з яким буде проводиться порівняння.
- compareValue, постійне значення, з яким буде проводиться порівняння.
- operator, оператор, який використовується при порівнянні.
- strict, чи є порівняння суворим: повинні збігатися не тільки значення, але і їх тип.
default. CDefaultValueValidator. инициализирует атрибути вказаним значенням.
Валідацію при цьому не виконує. Потрібен для вказівки значень за замовчуванням.
- setOnEmpty, встановлювати значення за замовчуванням тільки якщо значення дорівнює null або порожній рядку.
- value, значення за замовчуванням.
date. CDateValidator. перевіряє, що значення є датою, часом або
і тим і іншим разом.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- format, формат значення. Може бути масивом або рядком. За замовчуванням дорівнює
'MM / dd / yyyy'. Решта формати описані в API CDateTimeParser. - timestampAttribute, ім'я атрибута, в який буде записаний результат розбору дати.
За замовчуванням дорівнює null.
exist. CExistValidator. перевіряє, чи є значення атрибута в певній таблиці.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- attributeName, ім'я атрибута класу ActiveRecord, що використовується для перевірки значення.
- className, ім'я класу ActiveRecord, використовуваного для перевірки.
- criteria, додатковий критерій запиту.
file. CFileValidator. перевіряє, чи був завантажений файл.
- allowEmpty, чи можна не завантажувати файл і залишити поле порожнім.
- maxFiles, максимальна кількість файлів.
- maxSize, максимальний розмір в байтах.
- minSize, мінімальний розмір в байтах.
- tooLarge, повідомлення про помилку, що видається якщо файл занадто великий.
- tooMany, повідомлення, що видається якщо завантажено надто багато файлів.
- tooSmall, повідомлення, що видається якщо долучення занадто малий.
- types, список розширень файлів, які дозволено завантажувати.
- wrongType, повідомлення, що видається якщо даний тип файлу завантажувати не можна.
- mimeTypes, список MIME-типів файлів, які дозволено завантажувати. Можна використовувати за умови, що
встановлено PECL-розширення fileinfo. З'явилося в версії 1.1.11. - wrongMimeType, повідомлення, що видається якщо даний тип файлу завантажувати не можна. Можна використовувати за умови,
що встановлено PECL-розширення fileinfo. З'явилося в версії 1.1.11.
filter. CFilterValidator. застосовує до даних фільтр.
in. CRangeValidator. перевіряє, чи входить значення в заданий інтервал або список значень.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- range, список допустимих значень або допустимий інтервал.
- strict, чи є порівняння суворим: повинні збігатися не тільки значення, але і їх тип.
- not, дозволяє перевірити виключення з інтервалу замість входження в нього.
length. CStringValidator. перевіряє, що кількість введених символів відповідає деякому значенню.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- encoding, кодування перевіряється рядки.
- is, точна кількість символів.
- max, максимальна кількість символів.
- min, мінімальна кількість символів.
- tooShort, повідомлення про помилку, що видається якщо кількість символів занадто мало.
- tooLong, повідомлення про помилку, що видається якщо кількість символів занадто велике.
numerical. CNumberValidator. перевіряє, що її параметром є число в певному інтервалі.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- integerOnly, тільки цілі числа.
- max, максимальне значення.
- min, мінімальне значення.
- tooBig, повідомлення про помилку, що видається якщо значення занадто велике.
- tooSmall, повідомлення про помилку, що видається якщо значення занадто мало.
- integerPattern, регулярний вираз, що використовується для валідації цілих чисел. Використовується тоді, коли
integerOnly одно true. З'явилося в версії 1.1.7. - numberPattern, регулярний вираз, що використовується для валідації чисел з плаваючою точкою. Використовується тоді, коли
integerOnly одно false. З'явилося в версії 1.1.7.
match. CRegularExpressionValidator. перевіряє, чи збігається значення формальному виразу.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- pattern, регулярний вираз.
- not, інвертувати чи логіку валідації. Якщо значення дорівнює true, то перевіряється значення не повинно збігатися
з регулярним виразом. Значення за замовчуванням: false. З'явилося в версії 1.1.5.
required. CRequiredValidator. перевіряє, що значення не дорівнює null і не є порожнім.
- requiredValue, значення, яке повинен мати атрибут.
- strict, чи є порівняння суворим: повинні збігатися не тільки значення, але і їх тип.
safe. CSafeValidator. позначає атрибут безпечним для масового привласнення.
type. CTypeValidator. звіряє тип атрибута з зазначеним (integer. float. string. date. time. datetime).
Для валідації дат з версії 1.1.7 краще використовувати CDateValidator.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- dateFormat, формат для валідації дат.
- datetimeFormat, формат для валідації дати і часу.
- timeFormat, формат для валідації часу.
- type, тип даних.
unique. CUniqueValidator. перевіряє значення на унікальність.
- allowEmpty, чи може значення дорівнювати null або бути порожнім.
- attributeName, ім'я атрибута класу ActiveRecord, що використовується для перевірки значення.
- caseSensitive, чи є порівняння регістронезавісімого.
- className, ім'я класу ActiveRecord, використовуваного для перевірки.
- criteria, додатковий критерій запиту.
unsafe. CUnsafeValidator. позначає атрибут небезпечним для масового привласнення.
url. CUrlValidator. перевіряє, що значення є вірним URL http або https.