Маршруты - основы.

Простой маршрут

Самый простой маршрут принимает URI и анонимную функцию.

Route::get('/greeting', function () {
    return 'Hello World';
});

При переходе по адресу "greeting" будет выведено 'Hello World'.

Файлы маршрутов

Веб-маршруты хранятся в папке routes/web.php

Доступные методы маршрутов

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

Если необходимо зарегистрировать несколько методов для маршрута, используются методы "match" и "any".

Route::match(['get', 'post'], '/', function () {
    //
});

Route::any('/', function () {
    //
});

Маршруты-редиректы

Если необходимо сделать редирект с одно адреса на другой, используется метод "redirect".

Route::redirect('/here', '/there');

Код ответа редиректа по умолчанию 302, его можно изменить, дополнительно указав нужный параметр.

Route::redirect('/here', '/there', 301);

При использовании редиректов слова "destination" и "status" являются зарезервированными и их нельзя использовать.

View - маршруты

Если маршрут должен возвращать только шаблон view, можно использовать метод Route::view.

Route::view('/welcome', 'welcome');

Route::view('/welcome', 'welcome', ['name' => 'Taylor']);

Кеширование маршрутов

Для увеличения скорости маршруты могут быть закешированы.

Для этого используется следующая команда.

php artisan route:cache

При каждом изменении маршрутов их нужно заново кешировать.

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

php artisan route:clear

Получение текущего маршрута

Для получения параметром текущего маршрута можно использовать методы current, currentRouteName и currentRouteAction.

use Illuminate\Support\Facades\Route;

$route = Route::current(); // Illuminate\Routing\Route
$name = Route::currentRouteName(); // string
$action = Route::currentRouteAction(); // string

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

По умолчанию, если маршрут не найден, выводится страница 404.

В Laravel можно изменить это поведение с помощью fallback маршрутов.

Route::fallback(function () {
    //
});

Такой маршрут должен стоять самым последним в списке маршрутов.