W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
重定向響應(yīng)通常是類 Illuminate\Http\RedirectResponse 的實(shí)例,并且包含用戶要重定向至另一個(gè) URL 所需的響應(yīng)頭。
有幾種方法可以產(chǎn)生 RedirectResponse 的實(shí)例,最簡(jiǎn)單的方式就是透過(guò)輔助方法 redirect。當(dāng)在測(cè)試時(shí),建立一個(gè)模擬重定向響應(yīng)的測(cè)試并不常見(jiàn),所以使用輔助方法通常是可行的:
return redirect('user/login');
通常重定向至新的 URL 時(shí)會(huì)一并將數(shù)據(jù)存進(jìn)一次性 Session。所以為了方便,你可以利用方法連接的方式創(chuàng)建一個(gè) RedirectResponse 的實(shí)例并將數(shù)據(jù)存進(jìn)一次性 Session:
return redirect('user/login')->with('message', 'Login Failed');
你可能希望將用戶重定向至前一個(gè)位置,例如當(dāng)表單提交之后。你可以使用 back 方法來(lái)達(dá)成這個(gè)目的:
return redirect()->back();
return redirect()->back()->withInput();
當(dāng)你調(diào)用輔助方法 redirect 且不帶任何參數(shù)時(shí),將會(huì)返回 Illuminate\Routing\Redirector 的實(shí)例,你可以對(duì)該實(shí)例調(diào)用任何的方法。舉個(gè)例子,要產(chǎn)生一個(gè) RedirectResponse 到一個(gè)路由名稱,你可以使用 route 方法:
return redirect()->route('login');
如果你的路由有參數(shù),你可以放進(jìn) route 方法的第二個(gè)參數(shù)。
// 路由的 URI 為:profile/{id}
return redirect()->route('profile', [1]);
如果你要重定向至路由且路由的參數(shù)為 Eloquent 模型的「ID」,你可以直接將模型傳入,ID 將會(huì)自動(dòng)被提?。?/p>
return redirect()->route('profile', [$user]);
返回根據(jù)路由名稱的重定向,并給予特定名稱路由參數(shù)賦值
// 路由的 URI 為:profile/{user}
return redirect()->route('profile', ['user' => 1]);
既然可以產(chǎn)生 RedirectResponse 的實(shí)例并重定向至路由名稱,同樣的也可以重定向至控制器動(dòng)作:
return redirect()->action('App\Http\Controllers\HomeController@index');
提示: 如果你已經(jīng)通過(guò) URL::setRootControllerNamespace 注冊(cè)了根控制器的命名空間,那么就不需要對(duì) action() 方法內(nèi)的控制器指定完整的命名空間。
return redirect()->action('App\Http\Controllers\UserController@profile', [1]);
return redirect()->action('App\Http\Controllers\UserController@profile', ['user' => 1]);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: