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

Метод enum

Метод enum класса Rule предназначен для валидации данных на соответствие значениям перечисления (enum) PHP. Первым параметром передаётся имя класса перечисления, вторым - опциональный метод, который должен возвращать массив допустимых значений. Метод возвращает объект правила, который можно использовать в массиве правил валидации.

Синтаксис

<?php use Illuminate\Validation\Rule; Rule::enum($enumClass, $method = 'cases'); ?>

Пример

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

<?php namespace App\Enums; enum ArticleStatus: string { case DRAFT = 'draft'; case PUBLISHED = 'published'; case ARCHIVED = 'archived'; } ?>
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use App\Enums\ArticleStatus; class ArticleController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'status' => ['required', Rule::enum(ArticleStatus::class)], ]); // Further logic... } } ?>

Результат выполнения кода при передаче допустимого значения:

["status" => "published"]

Пример

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

<?php namespace App\Enums; enum UserRole: string { case ADMIN = 'admin'; case EDITOR = 'editor'; case VIEWER = 'viewer'; public static function getValues(): array { return [ self::ADMIN->value, self::EDITOR->value, self::VIEWER->value, ]; } } ?>
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use App\Enums\UserRole; class UserController extends Controller { public function update(Request $request, $id) { $validated = $request->validate([ 'role' => ['required', Rule::enum(UserRole::class, 'getValues')], ]); // Update user... } } ?>

Результат выполнения кода при передаче допустимого значения:

["role" => "editor"]

Пример

Используем метод enum в составе более сложного массива правил вместе с другими валидационными правилами:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use App\Enums\ArticleStatus; class PostController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'title' => 'required|string|max:255', 'content' => 'required|string', 'status' => ['required', Rule::enum(ArticleStatus::class)], ]); // Create post... $res = $validated; return $res; } } ?>

Результат выполнения кода при успешной валидации:

["title" => "My Article", "content" => "Content text...", "status" => "published"]

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

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