РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
613 of 1392 menu

Правило enum

Правило enum применяется к полям формы для проверки того, что значение существует в указанном перечислении BackedEnum. Первым параметром передаётся класс перечисления, вторым - метод для получения допустимых значений. Если второй параметр не указан, используется метод cases.

Синтаксис

<?php use Illuminate\Validation\Rule; $rules = [ 'field' => Rule::enum(EnumClass::class, 'method'), ]; ?>

Для использования правила enum необходимо импортировать класс Rule из пространства имён Illuminate\Validation.

Пример

Давайте создадим перечисление для статусов заказа и проверим, что переданное значение является допустимым:

<?php namespace App\Enums; enum OrderStatus: string { case PENDING = 'pending'; case PROCESSING = 'processing'; case COMPLETED = 'completed'; case CANCELLED = 'cancelled'; } ?>
<?php use Illuminate\Http\Request; use Illuminate\Validation\Rule; use App\Enums\OrderStatus; $request = Request::create('/orders', 'POST', [ 'status' => 'processing', ]); $rules = [ 'status' => ['required', Rule::enum(OrderStatus::class)], ]; $validator = validator($request->all(), $rules); if ($validator->passes()) { echo "Validation passed"; } else { echo "Validation failed"; } ?>

Результат выполнения кода:

"Validation passed"

Пример

Проверим значение, которое не входит в перечисление:

<?php use Illuminate\Http\Request; use Illuminate\Validation\Rule; use App\Enums\OrderStatus; $request = Request::create('/orders', 'POST', [ 'status' => 'invalid_status', ]); $rules = [ 'status' => ['required', Rule::enum(OrderStatus::class)], ]; $validator = validator($request->all(), $rules); if ($validator->fails()) { $res = $validator->errors()->first('status'); echo $res; } ?>

Результат выполнения кода:

"The selected status is invalid."

Пример

Использование правила enum внутри класса FormRequest для валидации данных формы:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; use App\Enums\OrderStatus; class OrderRequest extends FormRequest { public function authorize(): bool { return true; } public function rules(): array { return [ 'status' => ['required', Rule::enum(OrderStatus::class)], 'amount' => ['required', 'numeric', 'min:0'], ]; } } ?>

Пример

Использование правила enum с пользовательским методом для получения допустимых значений. Предположим, что перечисление содержит метод values:

<?php namespace App\Enums; enum PaymentMethod: string { case CARD = 'card'; case PAYPAL = 'paypal'; case BANK_TRANSFER = 'bank_transfer'; public static function values(): array { return ['card', 'paypal']; } } ?>
<?php use Illuminate\Http\Request; use Illuminate\Validation\Rule; use App\Enums\PaymentMethod; $request = Request::create('/payments', 'POST', [ 'method' => 'bank_transfer', ]); $rules = [ 'method' => ['required', Rule::enum(PaymentMethod::class, 'values')], ]; $validator = validator($request->all(), $rules); if ($validator->fails()) { $res = $validator->errors()->first('method'); echo $res; } ?>

Результат выполнения кода:

"The selected method is invalid."

Смотрите также

  • метод in,
    который проверяет вхождение значения в список
  • метод unique,
    который проверяет уникальность значения в базе данных
  • метод exists,
    который проверяет существование значения в базе данных
  • правило in,
    которое проверяет вхождение значения в указанный массив
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить