MV framework logo
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Документация
Скачать .zip версия 3.2.0 от 25.12.2024
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
Документация
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
MV tracker

Валидация полей формы

При создании форм используются поля, описанные в разделе Типы данных. Независимо от способа создания формы (из модели / без модели) поля имеют свойства, которые заданы по умолчанию.

  • для всех типов полей: required, must_match
  • char: regexp, captcha, length, min_length, max_length, min_max_length, unique
  • int, float: zero_allowed, positive
  • email, phone, url, redirect: format, а также свойства, наследуемые от char
  • text: свойства, наследуемые от char
  • file, image, multi_images: allowed_extensions, allowed_mime_types, в виде массива

На основании этих свойств происходит изначальная валидация полей форм методом validate().

//Задаем поля будущей формы
$fields = [
    ['Имя', 'char', 'name', ['max_length' => 20]],
    ['Код купона', 'char', 'cupon', ['length' => 8]],
    ['О себе', 'text', 'about'],
    ['Email', 'email', 'email', ['unique' => true]],
    ['Пароль', 'password', 'password', ['min_length' => 5]],
    ['Повтор пароля', 'password', 'password_repeat', ['must_match' => 'password']],
    ['Captcha', 'char', 'code', ['captcha' => 'extra/captcha-simple']]
];

//Создаем объект формы
$form = new Form($fields);

//Задаем обязательные поля
$form -> setRequiredFields(['name', 'password', 'password_repeat', 'code']);

//Добавляем еще одно поле
$form -> addField(['Фотография', 'image', 'photo', ['files_folder' => 'uploads']));

//Получаем данные из POST и валидируем
$form -> submit() -> validate();

//Можем проверить состояние формы (чаще в AJAX)
Debug::pre($form -> getState());

//Если форма валидна
if($form -> isSubmitted() && $form -> isValid())
{
    ...
}

//Выборочная валидация полей
$form -> submit() -> validate(['name', 'coupon']);

//Добавление ошибки в форму
$form -> addError('Пожалуйста введите более подробное описание деятельности.');

//Ручная установка значения поля
$form -> about = 'Описание деятельности не указано.';

Таким образом при проверке полей будут задействованы правила max_length, length, required, min_length, must_match для соответствующих полей. Исходя из конкретной ситуации, можно переопределить заданные правила для полей или назначить новые.

Добавление нового правила

Для добавления нового правили нужно вызвать метод addRule() с массивом параметров в следующем порядке:

  1. название поля, также может быть массивом или символом '*' для всех полей
  2. название свойства, характерное для типа данных, к которому относится данное поле
  3. значение свойства для проверки (если передать значение в виде '->', то будет изменено только сообщение а правило останется в прежнем виде, это удобно для изменения сообщения об ошибках для полей, проверяемых регулярными выражениями: int, float, email, phone, url, redirect
  4. сообщение, которое выводится если проверка не пройдена, если данный параметр не передан, будет выводиться системное сообщение для данного правила
//Делаем поле обязательным для заполнения
$form -> addRule('cupon', 'required', true, 'Для регистрации необходимо ввести код купона.');

//Делаем все поля обязательными для заполнения
$form -> addRule('*', 'required', true, 'Данное поле должно быть заполнено.');

//Добавляем проверку по регулярному выражению
$form -> addRule('cupon', 'regexp', '/^d+$/', 'Код купона может содержать только цифры.');

//Задаем минимальную длину для вводимого текста
$form -> addRule('about', 'min_length', 200, 'Для рассказа о себе необходимо не менее 200 символов.');

//Задаем максимальную длину для нескольких полей
$form -> addRule(['name', 'cupon', 'email'], 'max_length', 100, 'Длина поля не должна превышать 100 символов.');

//Зададим новое сообщение при проверке на уникальность email адреса
//(взамен сообщения по умолчанию)
$form -> addRule('email', 'unique', true, 'Данный email адрес уже используется другим пользователем.');

//Новое сообщение при проверке на корректность email адреса
$form -> addRule('email', 'format',  '/^[-a-z0-9_.]+@[-a-z0-9_.]+.[a-z]{2,5}$/i', 'Введите корректный e-mail');

//Новое сообщение (короткий формат) при проверке на корректности email адреса
$form -> addRule('email', 'format', '->', 'Введите корректный e-mail');

//Проверка повторного значения ввода пароля
$form -> addRule('password_repeat', 'must_match', 'password', 'Неверный повтор пароля');

//Ограничение по типам загружаемых файлов
$form -> addRule('photo', 'allowed_extensions', ['png', 'jpg'], 'Выберите файл png или jpg');

Удаление правила

Для удаления правила необходимо в метод removeRule() передать 2 аргумента: название поля и название правила, которое необходимо удалить.

//Не проверять минимальную длину
$form -> removeRule('name', 'max_length');

//Поле не обязательно для заполнения
$form -> removeRule('cupon', 'required');

//Поля не обязательны для заполнения
$form -> removeRule(['name', 'email'], 'required');

//Уберем проверку email на уникальность
$form -> removeRule('email', 'unique');

//Уберем проверку всех полей на максимальную длину
$form -> removeRule('*', 'max_length');

Отображение ошибок валидации

//Занесение данных POST в форму и валидация
$form -> submit() -> validate();

//Получить массив ошибок
$errors = $form -> getErrors();

//Добавить ошибку в общий список
$form -> addError('Текст ошибки.')

//Добавить ошибку для конкретного поля
$form -> addError('Текст ошибки.', 'content')

//Вывод всех ошибок одним списком
echo $form -> displayErrors();

//Вывод формы с ошибками, расположеными рядом с полями
echo $form -> setDisplayWithErrors() -> display();

Предыдущий раздел

Настройка полей формы

Следующий раздел

Безопасность форм
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться