Функция to_route
Функция to_route в Laravel предназначена для создания URL-адресов по имени маршрута. В отличие от функции route, которая возвращает строку с URL, функция to_route возвращает объект RedirectResponse, что делает её удобной для использования в контроллерах при необходимости перенаправления. Первым параметром передаётся имя маршрута, вторым - массив параметров, третьим - HTTP-статус, четвёртым - дополнительные заголовки.
Синтаксис
<?php
to_route($route, $parameters, $status, $headers);
?>
Пример
Давайте выполним перенаправление на маршрут с именем 'user.profile':
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function show(Request $request, $id)
{
$user = User::find($id);
if (!$user) {
return to_route('user.profile', ['id' => 1]);
}
return view('user.profile', ['user' => $user]);
}
}
?>
Пример
Давайте выполним перенаправление на маршрут с параметрами:
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function store(Request $request)
{
$post = new Post();
$post->title = $request->input('title');
$post->text = $request->input('text');
$post->save();
return to_route('posts.show', [
'id' => $post->id,
'lang' => 'en'
]);
}
}
?>
Пример
Давайте выполним перенаправление на маршрут с указанием HTTP-статуса и заголовков:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function logout(Request $request)
{
$request->session()->flush();
return to_route(
'login',
[],
302,
['X-Custom-Header' => 'value']
);
}
}
?>
Пример
Давайте используем функцию to_route в Blade-шаблоне для создания ссылки:
<a href="{{ to_route('home') }}">
Home
</a>
<a href="{{ to_route('user.profile', ['id' => 5]) }}">
Profile
</a>