Метод name
Метод name класса Route применяется к объекту
маршрута и позволяет присвоить ему уникальное имя.
Именованные маршруты облегчают создание ссылок
и редиректов, делая код более читаемым и поддерживаемым.
Метод принимает один параметр - строку с именем маршрута.
Рекомендуется использовать имена в формате
'resource.action', например 'articles.index'.
Синтаксис
<?php
Route::get($uri, $callback)->name($name);
?>
Пример
Давайте назначим имя маршруту для страницы со списком статей:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/articles', function () {
return view('articles.index');
})->name('articles.index');
?>
Пример
Теперь мы можем сгенерировать URL по имени маршрута:
<?php
use Illuminate\Support\Facades\Route;
$url = route('articles.index');
echo $url;
?>
Результат выполнения кода:
"http://localhost/articles"
Пример
Именованные маршруты особенно полезны с динамическими параметрами:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/articles/{id}', function ($id) {
return view('articles.show', ['id' => $id]);
})->name('articles.show');
$url = route('articles.show', ['id' => 5]);
echo $url;
?>
Результат выполнения кода:
"http://localhost/articles/5"
Пример
Именованные маршруты можно использовать в контроллерах для редиректов:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function store(Request $request)
{
$article = Article::create($request->all());
return redirect()->route('articles.show', ['id' => $article->id]);
}
}
?>
Пример
Имена маршрутов можно использовать для проверки текущего маршрута:
@if (request()->routeIs('articles.index'))
<h1>Список статей</h1>
@elseif (request()->routeIs('articles.show'))
<h1>Просмотр статьи</h1>
@else
<h1>Другая страница</h1>
@endif
Смотрите также
-
класс
Route,
основной класс для определения маршрутов -
метод
get,
определяет маршрут для GET-запросов -
метод
post,
определяет маршрут для POST-запросов -
метод
middleware,
назначает посредников для маршрута