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?


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


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 )


55

Laravel 5.2+, przycisk Wstecz

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

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.


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.


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>

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()

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>


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ć.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.