Маршрутизация в модуле

Маршрутизация в модулях строится аналогично маршрутизации в обычном приложении Laravel. Основой будут все те же самые контроллеры и маршруты. Создадим файл с маршрутами в папке routes: routes\web.php. Содержимое то же самое, то и в приложении, например:


use Illuminate\Support\Facades\Route;
use MXJ\Addons\Blog\Http\Controllers\BlogController;

Route::get('/blog', [BlogController::class, 'index']) ->middleware(['web']);

Важно! Часть работы Laravel делает под капотом, и как правило вы этого не замечаете. Например, стандартный middleware web, который отвечает за обработку CSRF токенов в приложении прописывается автоматически, а вот в модуле вам придется делать это самостоятельно. Не забывайте тестировать ваши маршруты на авторизацию и безопасность.

Теперь наши маршруты необходимо зарегистрировать в приложении, для это в функции register сервис провайдера добавляем


    public function register()
    {
        …
        $this->loadRoutesFrom(__DIR__.'/../routes/web.php');
        …
    }

Работа с контроллерами та же самая что и в приложении. Правда стандартная команда php artisan make:controller PhotoController –resource на сработает, поэтому в папке src\Http\Controllers  руками создадим файл BlogController.php. Пример пустого контроллера для модуля:


namespace MXJ\Addons\Blog\Http\Controllers;
use Illuminate\Routing\Controller;
class BlogController extends Controller
{
    use AuthorizesRequests;
    public function index()
    {
        return redirect('/');
    }
}

19.07.2021