Laravel - 重定向()与 to_route() 与重定向()-> 路线()

问题描述 投票:0回答:1

在 Laravel 10 中,假设我的

web.php
文件中有这条路线:

Route::get('/whatever',function(){
    return response()->json([
        'message' => 'hello from whatever route'
    ]);
})->name('whatever');

现在我想从路线

/
重定向到路线
/whatever
,我可以使用3条语句来达到相同的结果

Route::get('/', function () {
    return redirect('whatever'); //works
    return redirect()->route('whatever'); //works
    return to_route('whatever') //works
});

那么它们之间有什么区别呢?

php laravel redirect routes url-routing
1个回答
0
投票

由于 URL 地址与路由名称相匹配,您的问题变得复杂。因此,我将用一个新的例子来说明这三个函数之间的区别。

示例

Route::get('/path/to/whatever', function() {
    // ...
})->name('example-whatever-name');

什么是
redirect()
帮手

redirect()
是 Laravel 中执行重定向的“助手”。有多种方法可以将用户重定向到新 URL。如果您向重定向函数提供第一个参数,则不必指定路由名称,而是提供准确的 URL 地址。

return redirect('/path/to/whatever');

不带参数调用
redirect()
Redirect
类的解释

如果

redirect()
函数没有提供任何参数,则返回
Redirect
类的实例,在该实例中可以调用各种函数。此类函数的示例包括“动作”、“路线”等。您对
route()
函数感兴趣。

对于这个

route()
功能,您不需要提供URL地址,而是需要传递路由名称作为参数,它会根据路由名称重定向到相应的路由。

return redirect()->route('example-whatever-name');

什么是
to_route()
辅助函数

从 Laravel 9.x 开始,框架中引入了

to_route()
全局函数。这只不过是
redirect()->route()
的更短替代方案。在大多数情况下,使用路由名称进行重定向比使用 URL 地址更好且更具可读性。因此,每次重定向都输入
redirect()->route()
是一种浪费。通过其缩写版本,您的代码会变得更短,并且可能更具可读性。

return to_route('example-whatever-name'); // an alternative to "redirect()->route()"
© www.soinside.com 2019 - 2024. All rights reserved.