qu1styy / validator
Validation module
Requires
- php: ^7.4 | ^8.0
- illuminate/database: 13.x-dev
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-18 18:59:45 UTC
README
Qu1styy/validator — модуль валидации данных для основного проекта CampusDesk.
Репозиторий содержит переиспользуемый PHP-компонент, который проверяет входные данные API CampusDesk до их дальнейшей обработки. Правила вынесены в отдельные классы, поэтому их можно подключать к разным формам и API-запросам, не дублируя логику в основном проекте.
Возможности
- обязательные поля (
require); - проверка формата электронной почты (
email); - проверка логина (
login); - проверка пароля (
password); - проверка кириллического текста (
kiril); - минимальная и максимальная длина значения (
min,max); - проверка уникальности значения в базе данных (
unique); - пользовательские сообщения об ошибках;
- добавление собственных валидаторов через единый базовый класс.
Установка
Пакет подключается через Composer:
composer require qu1styy/validator
Пакет требует PHP 7.4+ или 8.0+ и использует illuminate/database для правила unique.
Подключение валидаторов
Основной класс получает список доступных правил из app()->settings->app['validators']. В конфигурации CampusDesk валидаторы должны быть сопоставлены с их классами:
'validators' => [ 'require' => \Validators\RequireValidator::class, 'email' => \Validators\EmailValidator::class, 'kiril' => \Validators\KirilValidator::class, 'login' => \Validators\LoginValidator::class, 'max' => \Validators\MaxValidator::class, 'min' => \Validators\MinValidator::class, 'password' => \Validators\PasswordValidator::class, 'unique' => \Validators\UniqueValidator::class, ],
Использование
Передайте в Validator массив входных данных и правила для каждого поля:
use Src\Validator\Validator; $validator = new Validator( fields: [ 'email' => $request['email'] ?? null, 'login' => $request['login'] ?? null, 'password' => $request['password'] ?? null, ], rules: [ 'email' => ['require', 'email'], 'login' => ['require', 'login', 'min:3', 'max:30'], 'password' => ['require', 'password', 'min:8'], ], ); if ($validator->fails()) { return $validator->errors(); }
Метод fails() сообщает, были ли найдены ошибки, а errors() возвращает массив ошибок, сгруппированный по именам полей:
[
'email' => [
'Поле email не правильный формат',
],
]
Правила с аргументами записываются через двоеточие. Несколько аргументов разделяются запятыми:
'login' => ['min:3', 'max:30'],
Правило unique
Правило unique проверяет, что значение отсутствует в указанной таблице и колонке. Оно принимает два аргумента: имя таблицы и имя колонки:
'email' => ['require', 'email', 'unique:users,email'],
Для работы этого правила должен быть настроен illuminate/database и активное подключение к базе данных.
Пользовательские сообщения
Третьим аргументом можно передать собственные сообщения для правил:
$validator = new Validator( fields: ['email' => $request['email'] ?? null], rules: ['email' => ['require', 'email']], messages: [ 'require' => 'Укажите адрес электронной почты', 'email' => 'Введите корректный адрес электронной почты', ], );
В сообщениях поддерживаются placeholders :field и :value.
Архитектура
src/Validator/Validator.php— запускает правила для полей и собирает ошибки;src/Validator/AbstractValidator.php— базовый класс для правил и формирования сообщений;src/Validators/— готовые валидаторы;composer.json— настройки Composer и PSR-4 автозагрузка.
Чтобы добавить новое правило, создайте класс в пространстве имён Validators, унаследуйте его от AbstractValidator, реализуйте метод rule(): bool и зарегистрируйте класс в массиве validators.
Связь с CampusDesk
Этот репозиторий является отдельным модулем валидации для API основного проекта CampusDesk. Изменения в правилах могут влиять на обработку пользовательских данных в CampusDesk, поэтому после обновления валидатора следует проверить соответствующие API-сценарии основного проекта.
Лицензия
MIT