Laravel Zurück-Taste

86

Ich versuche, eine einfache Zurück-Schaltfläche auf einer Seite zu erstellen. Der Benutzer kann von zwei verschiedenen Seiten zu dieser Seite gelangen, daher möchte ich wissen, von welcher Seite er angekommen ist. Ist das möglich?

cosapostolo
quelle
3
{{ url()->previous() }}in Laravel 5
Connor Leech

Antworten:

149

In Laravel können Sie Folgendes tun: <a href="{{ Request::referrer() }}">Back</a>(vorausgesetzt, Sie verwenden Blade).

Laravel 4

{{ URL::previous() }}

Laravel 5+

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

Laravel-Dokumentation

Anon
quelle
Danke das funktioniert !! Konnte dies nicht in der Dokumentation finden ... gibt es irgendwo anders, wo ich mehr aus Laravel herausholen kann?
Cosapostolo
2
Sie können die Dokumentation überprüfen , ihre Foren verwenden , die Quelle im Laravel-Ordner durchsuchen oder in ihrem IRC-Kanal #laravel on freenode hängen . Empfehlen Sie dem IRC-Kanal wärmstens viele freundliche und hilfsbereite Personen, um Ihre Fragen Tag und Nacht zu beantworten.
Anon
21
@yannishristofakis Verwenden Sie Laravel 4? Das URL-Verhalten hat sich geändert. Verwenden Sie URL::previous()stattdessen.
Markus Hofmann
2
Request :: header ("referrer");
Ramesh
1
Das Problem bei diesem und dem URL :: previous () -Ansatz besteht darin, dass er auf dem http-Referrer basiert. 1) Dies wird möglicherweise nicht von allen Benutzeragenten festgelegt, sodass Sie sich nicht immer darauf verlassen können. 2) Wenn es festgelegt ist, Sie jedoch die bestimmte Seite über einen Link auf einer externen Quelle besuchen, kehren Sie zu dieser Quelle zurück.
Morksinaanab
70

Ich weiß, dass dies eine alte Frage ist, aber ich habe sie gefunden, als ich nach der gleichen Lösung gesucht habe. Die obige Lösung scheint in Laravel 4 nicht zu funktionieren. Sie können sie jedoch jetzt verwenden:

<a href="{{ URL::previous() }}">Go Back</a>

Ich hoffe, dies hilft Leuten, die in L4 nach dieser Funktion suchen

(Quelle: https://github.com/laravel/framework/pull/501/commits )

Josh Griggs
quelle
55

Laravel 5.2+, Zurück-Taste

<a href="{{ url()->previous() }}" class="btn btn-default">Back</a>
Akshay Khale
quelle
18

Die Verwendung von {{ URL:previous() }}do funktioniert zwar, aber wenn Sie dieselbe Route mit demselben Namen verwenden, um mehrere Ansichten anzuzeigen, gelangen Sie zurück zum ersten Endpunkt dieser Route.

In meinem Fall habe ich eine benannte Route, die basierend auf einem vom Benutzer ausgewählten Parameter 3 verschiedene Ansichten rendern kann. Natürlich habe ich einen Standardfall für die erste Eingabe in diese Route, wenn der Benutzer noch keine Option ausgewählt hat.

Wenn ich verwende URL:previous(), bringt mich Laravel zur Standardansicht zurück, auch wenn der Benutzer eine andere Option ausgewählt hat. Nur mit Javascript innerhalb der Schaltfläche konnte ich zur richtigen Ansicht zurückkehren:

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

Ich habe dies auf Laravel 5.3 getestet, nur zur Verdeutlichung.

Thiago Cardoso
quelle
17

Das Folgende ist eine vollständige Blade-Lösung (die von Laravel verwendete Template-Engine):

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

Das Optionsarray mit der Klasse ist optional. In diesem Fall gibt es das Design für eine Bootstrap 3-Schaltfläche an.

mike.bronner
quelle
1
Es gibt eine Sache, die geändert werden muss, anstatt {{...}} müssen Sie {!! ... !!} sonst würde die Zeichenfolge maskiert.
happyhardik
1
Zu der Zeit funktionierte dies in Laravel 4, bevor sie standardmäßig entkommen waren. Aktualisiert, um mit aktuellen Laravel-Versionen zu arbeiten. Danke :)
mike.bronner
14

Auf 5.1 konnte ich das nur zum Laufen bringen.

<a href="{{ URL::previous() }}" class="btn btn-default">Back</a>
mhankins
quelle
Funktioniert perfekt. Danke mein Herr!
Matt Inamdar
2

Eine der folgenden Möglichkeiten löst Ihr Problem

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

andere

URL::current()
user9747893
quelle
2

Sie können Javascript für dieses Provblem verwenden. Es wird ein Link aus dem Browserverlauf abgerufen.

<script>
function goBack() {
  window.history.back();
}
</script>
<button onclick="goBack()">Go Back</button>

Sohanur Rahman
quelle
0

Sie können {{URL :: previous ()}} verwenden, aber es ist nicht perfekt UX.

Wenn Sie beispielsweise die Taste F5 drücken und erneut auf die Schaltfläche Zurück mit {{URL :: previous ()}} klicken, bleiben Sie in.

Ein guter Weg ist die Verwendung von {{route ('page.edit', $ item-> id)}}. Es ist immer eine echte Seite, die Sie umleiten möchten.

Long Lê Hoàng
quelle
0
<a href="{{ url()->previous() }}" class="btn btn-warning"><i class="fa fa-angle-left"></i> Continue Shopping</a>

Dies funktionierte in Laravel 5.8

Davidkihara
quelle