Функция route
Функция route применяется для генерации URL-адресов
на основе зарегистрированных маршрутов. Первым параметром
передаётся имя маршрута, вторым - массив параметров,
которые подставляются в URL. Если параметры не требуются,
можно передать только имя маршрута. Функция возвращает
строку с полным URL-адресом, включая домен и протокол.
Синтаксис
<?php
route($name, $parameters = [], $absolute = true);
?>
Параметр $name - имя маршрута, которое было задано
в файле маршрутов. Параметр $parameters - массив
значений для динамических сегментов URL. Параметр
$absolute определяет, должен ли URL быть абсолютным.
Пример
Давайте сгенерируем URL для маршрута без параметров:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/about', function () {
return view('about');
})->name('about');
?>
<?php
$res = route('about');
echo $res;
?>
Результат выполнения кода:
"http://localhost/about"
В данном примере функция route сгенерировала
абсолютный URL для маршрута с именем 'about'.
Пример
Рассмотрим генерацию URL с динамическими параметрами:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/user/{id}', function ($id) {
return view('user', ['id' => $id]);
})->name('user.show');
?>
<?php
$res = route('user.show', ['id' => 5]);
echo $res;
?>
Результат выполнения кода:
"http://localhost/user/5"
В этом примере функция route подставила значение
5 в динамический сегмент {id} URL.
Пример
Пример генерации URL с несколькими параметрами:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/posts/{category}/{id}', function ($category, $id) {
return view('post', ['category' => $category, 'id' => $id]);
})->name('post.show');
?>
<?php
$res = route('post.show', ['category' => 'tech', 'id' => 10]);
echo $res;
?>
Результат выполнения кода:
"http://localhost/posts/tech/10"
Функция route автоматически подставляет значения
в соответствующие сегменты URL в правильном порядке.
Пример
Добавление строки запроса к сгенерированному URL:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/search', function () {
return view('search');
})->name('search');
?>
<?php
$res = route('search', ['q' => 'laravel', 'page' => 2]);
echo $res;
?>
Результат выполнения кода:
"http://localhost/search?q=laravel&page=2"
В данном случае функция route добавила параметры
в виде строки запроса, так как они не были определены
в шаблоне URL.