mezuno/php-validator

Php data validator

1.1.0 2023-09-25 16:36 UTC

This package is auto-updated.

Last update: 2024-09-26 20:17:49 UTC


README

Документация к RulesValidator

Оглавление

  1. Методы правил

Правила

На текущий момент (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.';
];