当我有这个命名的路线时:
路线:: get(‘/’,’IndexController @ index’)-> name(‘home’);
然后以任何控制器的任何操作方法;当我需要重定向到指定的路线回家时;这些语句中的任何一条都正确地重定向到预期的路由:
返回redirect(‘/’);
返回redirect()-> route(‘home’);
返回redirect()-> home();
什么时候使用每个?
有什么区别?
使用其他方法有什么好处?
解决方法:
如documentation所述:
When you call the redirect helper with no parameters, an instance of
07001 is returned, allowing you to call any
method on the Redirector instance. For example, to generate a
RedirectResponse to a named route, you may use the route method
正如您在API方法(下面的链接)中看到的那样,可以使用很多方法,并且还有一个特定的辅助方法home(),它只是redirect()-> route(‘home’)的快捷方式如@ceejayoz所强调.
现在,我们将讨论return redirect(‘/’);并返回redirect()-> route(‘home’);正如您所说,它们中的两个正确地重定向到了预期的路由,但是第二个在将来确实很有用.
为什么呢
因为如果您想更改路由文件中的URL结构,则仅需要更改路由,例如:
Route::get('/', 'IndexController@index')->name('home');
将会 :
Route::get('/home_page', 'IndexController@index')->name('home');
并且所有重定向都将引用该路由,并且您无需更改=>所有重定向仍将正常运行.
但
如果您选择使用第一个(我的意思是return redirect(‘/’);),那么在更改路由之后,您将需要解析所有控制器,以检查是否存在某些重定向,然后使用更改的路由和更改他们:p