codecamp

重定向

重定向响应通常是类 Illuminate\Http\RedirectResponse 的实例,并且包含用户要重定向至另一个 URL 所需的响应头。

返回重定向

有几种方法可以产生 RedirectResponse 的实例,最简单的方式就是透过辅助方法 redirect。当在测试时,建立一个模拟重定向响应的测试并不常见,所以使用辅助方法通常是可行的:

return redirect('user/login');

返回重定向并且加上快闪数据( Flash Data )

通常重定向至新的 URL 时会一并将数据存进一次性 Session。所以为了方便,你可以利用方法连接的方式创建一个 RedirectResponse 的实例并将数据存进一次性 Session:

return redirect('user/login')->with('message', 'Login Failed');

返回根据前一个 URL 的重定向

你可能希望将用户重定向至前一个位置,例如当表单提交之后。你可以使用 back 方法来达成这个目的:

return redirect()->back();

return redirect()->back()->withInput();

返回根据路由名称的重定向

当你调用辅助方法 redirect 且不带任何参数时,将会返回 Illuminate\Routing\Redirector 的实例,你可以对该实例调用任何的方法。举个例子,要产生一个 RedirectResponse 到一个路由名称,你可以使用 route 方法:

return redirect()->route('login');

返回根据路由名称的重定向,并给予路由参数赋值

如果你的路由有参数,你可以放进 route 方法的第二个参数。

// 路由的 URI 为:profile/{id}
return redirect()->route('profile', [1]);

如果你要重定向至路由且路由的参数为 Eloquent 模型的「ID」,你可以直接将模型传入,ID 将会自动被提取:

return redirect()->route('profile', [$user]);

返回根据路由名称的重定向,并给予特定名称路由参数赋值

// 路由的 URI 为:profile/{user}
return redirect()->route('profile', ['user' => 1]);

返回根据控制器动作的重定向

既然可以产生 RedirectResponse 的实例并重定向至路由名称,同样的也可以重定向至控制器动作:

return redirect()->action('App\Http\Controllers\HomeController@index');

提示: 如果你已经通过 URL::setRootControllerNamespace 注册了根控制器的命名空间,那么就不需要对 action() 方法内的控制器指定完整的命名空间。

返回根据控制器动作的重定向,并给予参数赋值

return redirect()->action('App\Http\Controllers\UserController@profile', [1]);

返回根据控制器动作的重定向,并给予特定名称参数赋值

return redirect()->action('App\Http\Controllers\UserController@profile', ['user' => 1]);

其他的请求信息
其他响应
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

环境配置

系统服务

哈希

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }