Laravel后退按钮


84

我正在尝试在页面上创建一个简单的后退按钮。用户可以从两个不同的页面到达此页面,因此我想知道他从哪个页面到达。那可能吗?


2
{{ url()->previous() }}在Laravel 5
Connor Leech,

Answers:


143

在Laravel中,您可以执行以下操作:(<a href="{{ Request::referrer() }}">Back</a>假设您使用的是Blade)。

Laravel 4

{{ URL::previous() }}

Laravel 5+

{{ url()->previous() }}

Laravel文档


谢谢你的作品!在文档中找不到这个...在哪里我还能从laravel中得到更多?
cosapostolo 2012年

2
您可以查看文档,使用他们的论坛,在laravel文件夹中浏览源代码,或将其挂在freenode上的IRC频道#laravel中。强烈建议IRC频道的许多友好和乐于助人的人在白天或晚上回答您的问题。
Anon 2012年

21
@yannishristofakis您正在使用Laravel 4吗?URL行为已更改,请URL::previous()改用。
Markus Hofmann 2013年

2
Request :: header(“ referrer”);
拉梅什2014年

1
这个问题和URL :: previous()方法的问题在于它基于http Referrer。1)可能并非所有用户代理都设置了此选项,因此您不能一直依赖它。2)此外,如果已设置但您从外部源上的链接访问特定页面,则将返回该源。
morksinaanab 2014年



17

以下是完整的Blade(Laravel使用的模板引擎)解决方案:

{!! link_to(URL::previous(), 'Cancel', ['class' => 'btn btn-default']) !!}

具有该类的options数组是可选的,在这种情况下,它指定Bootstrap 3按钮的样式。


1
有一件事情需要更改,而不是{{...}},您需要使用{!! ... !!}否则字符串将被转义。
happyhardik

1
没错,当时这是在Laravel 4中起作用的,然后默认情况下将其转义。更新以与当前的Laravel版本一起使用。谢谢:)
mike.bronner 2015年

17

确实确实可以使用{{ URL:previous() }},但如果您使用相同的命名路线来显示多个视图,它将带您回到该路线的第一个端点。

就我而言,我有一个命名的路线,该路线基于用户选择的参数,可以呈现3个不同的视图。当然,当用户尚未选择任何选项时,我有一条默认情况下的此路径中的首次输入。

使用时URL:previous(),即使用户选择了其他选项,Laravel也会带我回到默认视图。仅在按钮内部使用了javascript,我完成了返回正确视图的操作:

<a href="javascript:history.back()" class="btn btn-default">Voltar</a>

为了澄清起见,我在Laravel 5.3上对此进行了测试。


14

在5.1上,我只能使它起作用。

<a href="{{ URL::previous() }}" class="btn btn-default">Back</a>

完美运作。谢谢你,先生!
马特·伊纳达尔

2

以下问题之一解决您的问题

URL::previous() 
URL::back()

其他

URL::current()


0

您可以使用{{URL :: previous()}},但这并不是完美的UX。

例如,当您按下F5按钮并使用{{URL :: previous()}}再次单击“后退按钮”时,您将停留在该位置。

一个好方法是使用{{route('page.edit',$ item-> id)}}它始终是您想要重定向的页面。


0
<a href="{{ url()->previous() }}" class="btn btn-warning"><i class="fa fa-angle-left"></i> Continue Shopping</a>

这在Laravel 5.8中有效

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.