Урок 04

Именованные роуты

Имя роута — это метка, по которой можно генерировать URL в коде. Вместо того чтобы хардкодить /posts/5 в шаблонах, ты пишешь route('posts.show', 5). Если URL изменится — правишь в одном месте.

Задание имени

Route::get('/dashboard', function () {
    return view('dashboard');
})->name('dashboard');

Генерация URL

$url = route('dashboard'); // /dashboard

С параметрами:

Route::get('/posts/{post}', fn ($post) => $post)->name('posts.show');

$url = route('posts.show', ['post' => 5]); // /posts/5
$url = route('posts.show', 5); // то же самое

Массив параметров:

$url = route('posts.show', ['post' => 5, 'tab' => 'comments']);
// /posts/5?tab=comments

Редирект по имени

return redirect()->route('posts.index');

Группы с префиксом имени

Если несколько роутов в группе — им можно задать общий префикс:

Route::name('admin.')->prefix('admin')->group(function () {
    Route::get('/users', fn () => 'Users')->name('users');
    Route::get('/posts', fn () => 'Posts')->name('posts');
});

Имена будут admin.users и admin.posts.

Имя в Blade

<a href="{{ route('posts.show', $post->id) }}">Читать</a>

<a href="{{ route('admin.users') }}">Пользователи</a>

Ресурсные имена

Route::resource автоматически даёт имена:

МетодИмя
indexposts.index
createposts.create
storeposts.store
showposts.show
editposts.edit
updateposts.update
destroyposts.destroy

Проверка

php artisan route:list --name=posts

Фильтрует роуты по имени.