Базовий компонент валідації Phalcon надає наступні правила перевірки:
Додаткові перевірки можуть бути реалізовані самостійно. Наступний клас пояснює, як створити правило валідації для цього компонента:
Важливо пам'ятати, що валідатори повертають логічне значення, що показує, пройшла валідація успішно, або ні.
Перевірка через функцію зворотного визова¶
За допомогою Phalcon \ Validation \ Validator \ Callback ви можете виконати настроюється функцію, яка повинна повертати boolean або новий клас валідатора, який буде використовуватися для перевірки того ж поля. Після повернення true перевірка була успішною, повернення false означатиме, що перевірка не пройшла. При виконанні цього валідатора Phalcon буде передавати дані в залежності від того, що це таке - якщо це об'єкт, то буде переданий об'єкт, інакше дані. наприклад:
повідомлення валідаціі¶
Компонент Phalcon \ Validation має внутрішню підсистему роботи з повідомленнями. Вона забезпечує гнучку роботу з зберіганням і виведенням перевірочних повідомлень, що генеруються в ході перевірки.
Кожне повідомлення складається з екземпляра класу Phalcon \ Validation \ Message. Набір згенерованих повідомлень може бути отриманий за допомогою методу getMessages (). Кожне повідомлення містить розширену інформацію - атрибут, текст і тип повідомлення:
Ви можете передати повідомлення параметром за замовчуванням в кожен валідатор:
За замовчуванням метод getMessages () повертає всі повідомлення згенеровані валідатором. Ви можете відфільтрувати повідомлення використовуючи filter ():
фільтрація данних¶
Дані фільтруються для того, щоб бути впевненим, що шкідливі або невірні дані не будуть пропущені додатком.
Фільтрація і очищення виробляються за допомогою компонента filter. Ви можете додавати в нього свої фільтри, або користуватися вбудованими.
події валідаціі¶
Коли в класах визначена валідація, ви також можете реалізувати методи beforeValidation () і afterValidation (). щоб додати додаткові перевірки, очищення і т.п. Якщо beforeValidation () повертає 'false', валідація НЕ буде пройдена:
скасування валідаціі¶
За замовчуванням перевіряються всі валідатори, присвоєні полю, незалежно від того, чи успішно пройшла валідація одного з них чи ні. Ви можете змінити таку поведінку, якщо вкажете валідатора на якому з правил йому слід зупинити подальшу перевірку:
Перший валідатор має властивість 'cancelOnFail' => true, тому якщо валідація не пройде цю перевірку, то подальші перевірки в ланцюжку не будуть виконані.
Якщо ви створюєте власні валідатори, то можете динамічно зупиняти їх використовуючи властивість 'cancelOnFail':
Уникнення перевірки порожніх значеній¶
Ви можете передати опцію 'allowEmpty' всім вбудованим валідатор, щоб уникнути перевірки, яка буде виконана, якщо передано порожнє значення:
рекурсивна проверка¶
Ви також маєте право запускати екземпляри Validation всередині іншого за допомогою методу afterValidation (). У цьому прикладі перевірка примірника CompanyValidation також перевіряє екземпляр PhoneValidation: