Ранее на нашем сайте уже были материалы посвященные использованию роутов в Laravel. В той статье описывались примеры демонстрирующие создание маршрутов, а так же использование их при выводе в шаблонах. В качестве примеров использовались обязательные параметры для маршрутов. Однако был упущен момент, когда параметр может быть не обязательным.
Давайте рассмотрим пример как объявить параметр в маршруте, чтобы он был не обязательным. Для этого возьмём простой маршрут:
Route::get('/posts/page/{page}', function ($page) { return 'страница - ' . $page; });
Тут мы передаём параметр page – это номер страницы, и если мы его упустим, то Laravel в этом случае выдаст ошибку.
Давайте для этого же пути сделаем параметр page необязательным. Для этого добавляем символ «?» после самого параметра. Кроме того, чтобы Laravel не выдавал ошибку в этом примере, зададим значение по умолчанию для переменной $page = 1.
Route::get('/posts/page/{page?}', function ($page=1) { return 'страница - ' . $page; });
Так же можно совместно использовать в маршрутах обязательные и не обязательные параметры.
Route::get('/list/{section_code}/{page?}', function ($section_code, $page=1) { return 'Код раздела: '.$section_code.', страница - ' . $page; });
В этом примере section_code является обязательным параметром, а page – может по необходимости, но не является обязательным.