Laravel przycisk powrotu

86

Próbuję utworzyć prosty przycisk Wstecz na stronie. Użytkownik może wejść na tę stronę z dwóch różnych stron, więc chciałbym wiedzieć, z której strony przyszedł. Czy to jest możliwe?

cosapostolo
źródło
3
{{ url()->previous() }}w Laravel 5
Connor Leech

Odpowiedzi:

149

W Laravel możesz zrobić coś takiego: <a href="{{ Request::referrer() }}">Back</a>(zakładając, że używasz Blade).

Laravel 4

{{ URL::previous() }}

Laravel 5+

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

Dokumentacja Laravel

Zaraz
źródło
Dzięki, to działa !! Nie udało mi się znaleźć tego w dokumentacji ... czy jest jeszcze miejsce, w którym mogę wyciągnąć więcej z laravel?
cosapostolo
2
Możesz sprawdzić dokumentację , skorzystać z ich forów , przeglądać źródła w folderze laravel lub zawiesić się na ich kanale IRC #laravel na freenode. Gorąco polecam kanał IRC wielu przyjaznych i pomocnych ludzi, którzy odpowiedzą na Twoje pytania, w dzień iw nocy.
Anon
21
@yannishristofakis Czy używasz Laravel 4? Zachowanie adresu URL uległo zmianie, więc użyj URL::previous()zamiast tego.
Markus Hofmann
2
Request :: header ("referrer");
Ramesh
1
Problem z tym podejściem i podejściem URL :: previous () polega na tym, że jest on oparty na stronie odsyłającej http. 1) To może nie być ustawione przez wszystkich agentów użytkownika, więc nie możesz na tym polegać przez cały czas. 2) Ponadto, jeśli jest ustawione, ale odwiedzasz określoną stronę z linku w zewnętrznym źródle, wrócisz do tego źródła.
morksinaanab
70

Wiem, że to stare pytanie, ale znalazłem je, szukając tego samego rozwiązania. Powyższe rozwiązanie nie wydaje się działać w Laravel 4, możesz jednak użyć tego teraz:

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

Mam nadzieję, że pomoże to ludziom, którzy szukają tej funkcji w L4

(Źródło: https://github.com/laravel/framework/pull/501/commits )

Josh Griggs
źródło
55

Laravel 5.2+, przycisk Wstecz

<a href="{{ url()->previous() }}" class="btn btn-default">Back</a>
Akshay Khale
źródło
18

Rzeczywiście za pomocą {{ URL:previous() }} do work, ale jeśli używasz tej samej nazwanej trasy do wyświetlania wielu widoków, przeniesie Cię z powrotem do pierwszego punktu końcowego tej trasy.

W moim przypadku mam nazwaną trasę, która na podstawie wybranego przez użytkownika parametru może renderować 3 różne widoki. Oczywiście mam domyślny przypadek pierwszego wejścia w tę trasę, gdy użytkownik nie wybrał jeszcze żadnej opcji.

Kiedy używam URL:previous(), Laravel przenosi mnie z powrotem do widoku domyślnego, nawet jeśli użytkownik wybrał inną opcję. Dopiero używając javascript wewnątrz przycisku udało mi się powrócić do prawidłowego widoku:

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

Przetestowałem to na Laravel 5.3, tylko dla wyjaśnienia.

Thiago Cardoso
źródło
17

Oto kompletne rozwiązanie Blade (silnik szablonów używany przez Laravel):

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

Tablica opcji z klasą jest opcjonalna, w tym przypadku określa styl dla przycisku Bootstrap 3.

mike.bronner
źródło
1
Jest jedna rzecz, którą należy zmienić, zamiast {{...}} musisz użyć {!! ... !!} w przeciwnym razie łańcuch zostałby usunięty.
happyhardik
1
To prawda, że ​​w tym czasie działało to w Laravel 4, zanim domyślnie uciekli. Zaktualizowano do pracy z aktualnymi wersjami Laravel. Dzięki :)
mike.bronner
14

Na 5.1 mogłem to tylko uruchomić.

<a href="{{ URL::previous() }}" class="btn btn-default">Back</a>
mhankins
źródło
Działa świetnie. Dziękuję Panu!
Matt Inamdar
2

Jeden z poniższych rozwiązuje twój problem

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

inny

URL::current()
user9747893
źródło
2

Możesz użyć javascript do tego provblem. Pobiera link z historii przeglądarki.

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

Sohanur Rahman
źródło
0

Możesz użyć {{URL :: previous ()}}, ale nie jest to doskonały UX.

Na przykład, gdy naciśniesz przycisk F5 i ponownie klikniesz przycisk Wstecz z {{URL :: previous ()}}, zostaniesz w.

Dobrym sposobem jest użycie {{route ('page.edit', $ item-> id)}} to zawsze prawdziwa strona, którą chcesz przekierować.

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

To działało w Laravel 5.8

davidkihara
źródło