博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel5重定向函数redirect()的5个应用
阅读量:7033 次
发布时间:2019-06-28

本文共 2464 字,大约阅读时间需要 8 分钟。

  Laravel5 中新增了一个函数 redirect() 来代替 Laravel4 中 Redirect::to() 来进行重定向操作。函数 redirect() 可以将用户重定向到不同的页面或动作,同时可以选择是否带数据进行重定向。

  重定向响应是Illuminate\Http\RedirectResponse类的实例,其中包含了必须的头信息将用户重定向到另一个URL。辅助函数redirect返回的就是RedirectResponse类的实例。

  示例路由:

Route::get('testRedirect', 'UserController@testRedirect');

  示例动作controller:

public function testRedirect()

{
// 以下示例代码放在这个地方
}

1. 简单的重定向

  假设我们当前的域名为:http://localhost

return redirect('home');

  重定向到 http://localhost/home

return redirect('auth/login');

  重定向到 http://localhost/auth/login

return redirect('');

  重定向到 http://localhost,注意此处传入的是一个空字符串,而不是什么都不传,上文已说 redirect() 返回Illuminate\Http\RedirectResponse类实例。

2. 链接方法的重定向

return redirect()->back();

  重定向到上一个 URL,需要注意死循环的问题。辅助函数back返回前一个 URL (使用该方法之前确保路由使用了web中间件组或者都使用了session中间件)。还有另外一种方式:

return back()->withInput();

3. 重定向到命名路由

// 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方法。

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

  如果要重定向到带 ID 参数的路由(Eloquent 模型绑定),可以传递模型本身,ID 会被自动解析出来。

4. 重定向到控制器动作

return redirect()->action('HomeController@index');

  只需简单传递控制器和动作名到action方法即可。记住,你不需要指定控制器的完整命名空间,因为 Laravel 的RouteServiceProvider将会自动设置默认的控制器命名空间。

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

  如果控制器路由要求参数,你可以将参数作为第二个参数传递给action方法。

5. 带数据的重定向

  重定向到一个新的 URL 并将数据存储到一次性 Session 中通常是同时完成的。

return redirect('dashboard')->with('status', 'Profile updated!');

  此代码会将数据添加到Flash会话闪存数据中,然后你可以在结果 Controller 或视图中使用该数据:

@if (session('status'))

<div class="alert alert-success">
{
{ session('status') }}
</div>
@endif
  用户重定向到新页面之后,你可以从 Session 中取出显示这些一次性信息。

Reminder: Session Flash Data

Laravel has a concept of Session Flash data for only one request – after the next is loaded, that Session element/value is deleted, and can’t be retrieved again. This is exactly what is happening in with() method – its purpose is to add an error message or some input data only for that particular redirect and only for one page. It does the same thing as a function Session::flash(‘error’, ‘Something went wrong.’).

  Laravel 只有一个请求会话Flash数据概念,在下一个请求被加载后,会话数据被删除,并且无法再次检索。

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

  此方法没有参数,它的作用是将旧表单值保存到 Session 中。在新页面你可以使用old获取这些数据。

参考https://www.cnblogs.com/bndong/p/9035848.html

你可能感兴趣的文章
新手学习第一天
查看>>
如何在 IIS 上搭建 mercurial server
查看>>
linux字符集设置
查看>>
Samba集成Ldap认证
查看>>
扩展GridView控件——为内容项添加拖放及分组功能
查看>>
自然语言处理之AI深度学习顶级实战课
查看>>
Spring Boot旧项目改造中,不继承parent改用dependency时报的错误
查看>>
++i 和 i++到底是何区别哦?
查看>>
nginx基础-----安装、配置
查看>>
fdisk工具的非交互式分区方法
查看>>
vmware克隆主机不能启动网卡问题
查看>>
flow.ci 全部功能
查看>>
5.Lock接口及其实现ReentrantLock
查看>>
在Windows上安装Elasticsearch v5.4.2
查看>>
Vulkan Tutorial 12 Fixed functions
查看>>
display实现淡入淡出过渡效果
查看>>
CPU 硬盘性能到底相差多少
查看>>
linux系统学习第四天
查看>>
Linux文件压缩和打包
查看>>
Xshell5和Xftp5安装在同一个盘上出现问题
查看>>