重定向响应是Illuminate\Http\RedirectResponse类的实例,其中包含了必须的头信息将用户重定向到另外一个URL。辅助函数redirect返回的就是RedirectResponse类的实例。php
示例路由:web
Route::get('testRedirect', 'UserController@testRedirect');
示例动做:session
public function testRedirect() { // 如下示例代码为此处实现 }
假设咱们当前的域名为:http://localhostapp
return redirect('home');
重定向到 http://localhost/homeide
return redirect('auth/login');
重定向到 http://localhost/auth/login函数
return redirect('');
重定向到 http://localhost,注意此处传入的是一个空字符串,而不是什么都不传,上文已说 redirect() 返回Illuminate\Http\RedirectResponse类实例。spa
return redirect()->back();
重定向到上一个 URL,须要注意死循环的问题。辅助函数back返回前一个 URL (使用该方法以前确保路由使用了web中间件组或者都使用了session中间件)。还有另一种方式:code
return back()->withInput();
// get('login', ['as' => 'userLogin', 'uses'=>'loginController@index']); return redirect()->route('userLogin');
重定向到命名为 userLogin 的路由。这种方式的使用更为灵活,由于咱们未来要修改 URL 结构,只须要修改 routes.php 中路由的配置就好了。中间件
// For a route with the following URI: profile/{id} return redirect()->route('profile', [1]);
若是路由中有参数,能够将其做为第二个参数传递到route方法。blog
return redirect()->route('profile', [$user]);
若是要重定向到带 ID 参数的路由(Eloquent 模型绑定),能够传递模型自己,ID 会被自动解析出来。
return redirect()->action('HomeController@index');
只需简单传递控制器和动做名到action方法便可。记住,你不须要指定控制器的完整命名空间,由于 Laravel 的RouteServiceProvider将会自动设置默认的控制器命名空间。
return redirect()->action('UserController@profile', [1]);
若是控制器路由要求参数,你能够将参数做为第二个参数传递给action方法。
重定向到一个新的 URL 并将数据存储到一次性 Session 中一般是同时完成的。
return redirect('dashboard')->with('status', 'Profile updated!');
此代码会将数据添加到Flash会话闪存数据中,而后你能够在结果 Controller 或视图中使用该数据:
@if (session('status')) <div class="alert alert-success"> {{ session('status') }} </div> @endif
用户重定向到新页面以后,你能够从 Session 中取出显示这些一次性信息。
Laravel 只有一个请求会话Flash数据概念,在下一个请求被加载后,会话数据被删除,而且没法再次检索。
return redirect()->back()->withInput();
此方法没有参数,它的做用是将旧表单值保存到 Session 中。在新页面你可使用old获取这些数据。