Роуты для контроллеров
Давайте теперь в файле с роутами будем делать так, чтобы маршруты обрабатывались заданными контроллерами. Для этого вторым параметром метода get
нужно передать массив, состоящий из двух элементов:
- Имени контроллера с его пространством имен
- Имени действия
Общая схема выглядит так:
resources/routes/web.php<?php
Route::get(маршрут, [полное имя контроллера, имя действия]);
Давайте зададим маршрут, который будет вызывать метод show
нашего контроллера PostController
:
resources/routes/web.php<?php
Route::get('/post', ['App\\Http\\Controllers\\PostController', 'show']);
Пространства имен use
Указывать имя контроллера в виде строки не очень удобно. Это длинно и нужно удваивать слеши в пространстве имен (т.к. это строка). Существует более удобный и общепринятый способ.
Первым делом нужно в файле с роутами заюзать наш контроллер:
resources/routes/web.php<?php
use App\Http\Controllers\PostController;
После этого мы сможем воспользоваться статическим свойством класса ::class
, модифицируем наш маршрут:
resources/routes/web.php<?php
use App\Http\Controllers\PostController;
Route::get('/post', [PostController::class, 'show']);