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

Метод middleware

Метод middleware класса Route применяется к объекту маршрута и позволяет назначить один или несколько посредников, которые будут обработаны перед выполнением целевого действия маршрута. Первым параметром передаётся имя посредника или массив имён. Метод возвращает тот же объект маршрута, позволяя использовать цепочку вызовов для дополнительной настройки.

Синтаксис

<?php Route::middleware($middleware)->group($callback); ?>

Пример

Давайте назначим посредник 'auth' для маршрута, который возвращает профиль пользователя:

<?php use Illuminate\Support\Facades\Route; use AppHttpControllers\ProfileController; Route::middleware('auth')->get('/profile', [ProfileController::class, 'index']); ?>

Теперь перед вызовом метода index в контроллере ProfileController будет выполнен посредник auth, который проверит аутентификацию пользователя.

Пример

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

<?php use Illuminate\Support\Facades\Route; use AppHttpControllers\Admin\DashboardController; use AppHttpControllers\Admin\UserController; Route::middleware(['auth', 'verified', 'admin'])->group(function () { Route::get('/admin/dashboard', [DashboardController::class, 'index']); Route::get('/admin/users', [UserController::class, 'index']); }); ?>

Теперь все маршруты внутри группы будут проходить через посредники auth, verified и admin в указанном порядке.

Пример

Давайте назначим посредник с использованием псевдонима и цепочки методов для большей гибкости:

<?php use Illuminate\Support\Facades\Route; use AppHttpControllers\PostController; Route::get('/posts/create', [PostController::class, 'create']) ->middleware('auth') ->name('posts.create'); ?>

Метод middleware можно применять в цепочке вместе с другими методами, такими как name или prefix.

Пример

Давайте исключим посредник для одного маршрута внутри группы с помощью метода withoutMiddleware:

<?php use Illuminate\Support\Facades\Route; use AppHttpControllers\PublicController; Route::middleware('auth')->group(function () { Route::get('/public/info', [PublicController::class, 'info']) ->withoutMiddleware('auth'); }); ?>

Теперь маршрут /public/info будет доступен без посредника auth, несмотря на то, что находится внутри группы с этим посредником.

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

  • метод group,
    который создаёт группу маршрутов с общими атрибутами
  • метод withoutMiddleware,
    который исключает посредники для конкретного маршрута
  • метод prefix,
    который добавляет префикс к URI всех маршрутов группы
  • метод name,
    который задаёт имя для маршрута
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить