Search by

qu1styy / validator

Qu1styy

Validation module

Package info

github.com/Qu1styy/validator

pkg:composer/qu1styy/validator

Statistics

Installs: 5

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

dev-main 2026-09-18 18:59 UTC

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