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

Метод middleware

Метод middleware класса Controller позволяет назначить один или несколько посредников на текущий контроллер или на его отдельные методы. Первым параметром передаётся имя посредника или массив имён, вторым необязательным параметром - массив опций с ключами 'only' и 'except' для ограничения действия посредников на конкретные методы. Метод вызывается в конструкторе контроллера и возвращает экземпляр контроллера для цепочки вызовов.

Синтаксис

<?php $this->middleware($middleware, $options); ?>

Пример

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

<?php namespace App\Http\Controllers; class UserController extends Controller { public function __construct() { $this->middleware('auth'); } public function index() { $users = ['User 1', 'User 2', 'User 3']; return view('users.index', ['users' => $users]); } } ?>

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

"Redirect to login page if user is not authenticated"

Пример

Назначим посредник 'auth' только на метод 'edit':

<?php namespace App\Http\Controllers; class UserController extends Controller { public function __construct() { $this->middleware('auth')->only('edit'); } public function index() { $users = ['User 1', 'User 2', 'User 3']; return view('users.index', ['users' => $users]); } public function edit($id) { $user = 'User ' . $id; return view('users.edit', ['user' => $user]); } } ?>

Результат выполнения кода для маршрута '/user/1/edit':

"Redirect to login page if user is not authenticated"

Результат выполнения кода для маршрута '/user':

"View users.index is rendered"

Пример

Исключим метод 'index' из-под действия посредника 'auth':

<?php namespace App\Http\Controllers; class UserController extends Controller { public function __construct() { $this->middleware('auth')->except('index'); } public function index() { $users = ['User 1', 'User 2', 'User 3']; return view('users.index', ['users' => $users]); } public function edit($id) { $user = 'User ' . $id; return view('users.edit', ['user' => $user]); } } ?>

Результат выполнения кода для маршрута '/user':

"View users.index is rendered"

Результат выполнения кода для маршрута '/user/1/edit':

"Redirect to login page if user is not authenticated"

Пример

Назначим несколько посредников сразу через массив:

<?php namespace App\Http\Controllers; class UserController extends Controller { public function __construct() { $this->middleware(['auth', 'verified']); } public function index() { $users = ['User 1', 'User 2', 'User 3']; return view('users.index', ['users' => $users]); } } ?>

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

"Redirect to login page if user is not authenticated or not verified"

Пример

Назначим посредник с параметром 'role:admin' на метод 'adminPanel':

<?php namespace App\Http\Controllers; class AdminController extends Controller { public function __construct() { $this->middleware('role:admin')->only('adminPanel'); } public function adminPanel() { $data = ['Admin Panel', 'Statistics', 'Settings']; return view('admin.panel', ['data' => $data]); } } ?>

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

"Redirect to home if user does not have admin role"

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

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