Версия для печати | оригинал записи

Резервный маршрут в Laravel

ash — Log-ово Хозяина

08 апреля 2019 19:14
Резервный маршрут в Laravel
[attachid=599503]

Резервный маршрут: если ни один не подошёл

В Laravel 5.5.5 появилась новая функция маршрутизации Route::fallback(). Если не сработал ни один маршрут, тогда резервная функция
переопределяет дефолтную страницу 404 и вводит дополнительную логику. Вот как это работает.

В файле routes/web.php, в самом конце, после всех маршрутов, вы можете указать что-то типа этого:
Цитирую (PHP)
Route::group(['middleware' => ['auth'], 'prefix' => 'admin', 'as' => 'admin.'], function () {
    Route::get('/home', 'HomeController@index');
    Route::resource('tasks', 'Admin\TasksController');
});

// Еще какие-то маршруты....

Route::fallback(function() {
    return 'Хм… Почему ты оказался здесь?';
});

И если кто-то введет случайный адрес, например yourdomain.com/abcde12345, то вот что отобразиться:
[attachid=599502]

Обратите внимание, что Route::fallback() должен находиться в самом конце файла маршрутов, после всего остального.

У этого есть еще один побочный эффект: в отличии от дефолтной страницы 404, Route::fallback() будет следовать всем посредникам (Middlewares) группы «web» из app/Http/Kernel.php:
Цитирую (PHP)
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        // \Illuminate\Session\Middleware\AuthenticateSession::class,       
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],


Автор: Povilas Korop
Перевод: Demiurge Ash


Комменты: 0


Demiart © 2019