mezuno / php-validator
Php data validator
Requires
- php: ^8.1
- adbario/php-dot-notation: ^3.3
README
Документация к RulesValidator
Оглавление
Правила
На текущий момент (28.08.2023) существуют следующие правила для валидации:
И производные правила
Методы правил
required() и nullable()
У каждого правила существует минимум 2 метода: required() и nullable()
required() отвечает за обязательность поля
nullable() отвечает за обязательность и возможность поля быть null
Note
По умолчанию поле не обязательное
$rules = [ 'some_field' => IntRules::make()->required(), 'another_field' => IntRules::make()->nullable(), ];
Warning
required() и nullable() взаимоисключающие правила
Это значит, что нельзя указывать и то и другое, иначе применится последнее
min() и max()
Все правила типа NumericRules имеют методы min() и max()
Эти методы принимают парамтером минимальное и максимальное значение поля соответственно
Пример:
$rules = [ 'some_integer_field' => IntRules::make()->min(1)->max(3), ];
Также, у StringRules есть такие же методы, но имеют другое значение. Если в случае с NumericRules min() и max() обозначают конкретные значения, то в случае со строкой min() и max() обозначают ограничение на длину строки.
Пример:
$rules = [ 'password' => StringRules::make()->min(8)->max(32), ];
items()
ArrayRules содержит метод items(), принимающий в себя правила валидации полей массива, или полей подмассивов
Метод items() у ArrayRules имеет два параметра: первый параметр - массив правил для валидации полей массива, второй - флаг $nested, который указывает на наличие вложенности
Пример массива с одним обязательным полем:
$rules = [ 'some_array_field' => ArrayRules::make()->items([ 'some_array_item' => StringRules::make()->required(), ]), ];
Валидно:
{ "some_array_field": { "some_nested_array_item": 2 } }
Невалидно:
{ "some_another_array_field": [ { "some_nested_array_item": 2 } ] }
Пример массива с валидацией вложенных массивов
Note Второй параметр при валидации вложенных массивов - true
$rules = [ 'some_array_field' => ArrayRules::make()->items([ 'some_nested_array_item' => IntRules::make()->required(), ], true), ];
Валидно:
{ "some_another_array_field": [ { "some_nested_array_item": 2 } ] }
Невалидно:
{ "some_array_field": { "some_nested_array_item": 2 } }
exists()
Принимает в себя класс репоизтория первым параметром, и метод этого репозитория вторым параметром.
Пример:
$rules = [ 'card_barcode' => StringRules::make()->exists(CardRepository::class, 'findByBarcode'), ];
Метод validationExceptions()
Метод validationExceptions() нужен для установки кастомных сообщений на ошибки валидации
Чтобы задать кастомный Exception для какого-либо правила, нужно просто указать в возвращаемом массиве ключ поля, ключ правила и сам Exception
Пример:
$messages = [ 'field.required' => 'Some custom message for required', 'field.type' => 'Some custom message for type' 'field.min' => 'Some custom message for min' 'field.max' => 'Some custom message for max' 'field.exists' => 'Some custom message for exists' 'phone_field.phone' => 'Some custom message for phone'; 'email_field.email' => 'Some custom message for email'; ];
В данном примере при непереданном в запросе поле field будет выброшен указанный Exception.
Также, в можно указать кастомные Exception для элементов массивов, следующим образом:
$rules = [ 'product.items.price' => 'Item product[price] required.'; ];
Если необходимо добавить кастомное сообщение для элемента вложенного массива, используйте ключ nested_items:
$rules = [ 'products.nested_items.price' => 'Item products[][price] required.'; ];