Laravel 5.2+ 使用url()全局函数返回前一个页面的地址

时间:2022-11-04 15:19:20

注意:文章标题中5.2+表示该文章内容可向上兼容,适用于Laravel版本5.2及更高(目前最新为5.6),但不可向下兼容,即不适用于5.2版本以下。推荐大家花一点点时间,将自己的Laravel更新至5.6版本。

在后台开发时,我们经常需要获取用户之前操作页面的地址并生成一个返回之前页面的链接。
Laravel从版本5.2+开始,便提供了一系列全局帮助函数(Helper Functions)来简化我们的工作:

https://laravel.com/docs/5.2/helpers#method-url
要查看更高版本的相应文档,请将以上链接中的版本号替换为相应版本即可。

帮助函数中有一些很常用到的,比如Paths中的public_pathstorage_pathMiscellaneous中的ddviewsession等。
而今天我们要用到的是URLs中的函数:

//返回当前页面的地址(不包含参数)
url()->current(); //返回当前页面的完整地址(包含参数)
url()->full(); //返回前一个页面的地址(包含参数)
url()->previous();

例如,我们当前位置处于以下页面:

http://blog.sbot.io/articles/6?author=eagle

如果我们在该页面点击了某个操作,那么在我们的控制器中,我们输出

echo url()->previous();

会发现输出的结果与我们之前操作的页面的url一致:

http://blog.sbot.io/articles/6?author=eagle

全局函数可以在blade模板中直接使用,所以如果我们要创建一个返回按钮,我们可以在view中使用以下代码:

<a href="{{ url()->previous() }}">返回</a>

当然,很多情况下我们也可以直接返回至指定的路径名:

<a href="{{ route('articles.index') }}">返回文章管理</a>

这里我们使用了极为常用的route函数,articles.indexarticles这个资源(resource)的管理路径名称。