Кнопка возврата Laravel

86

Я пытаюсь создать на странице простую кнопку возврата. Пользователь может перейти на эту страницу с двух разных страниц, поэтому я хотел бы знать, с какой страницы он пришел. Это возможно?

Cosapostolo
источник
3
{{ url()->previous() }}в Laravel 5
Коннор Лич

Ответы:

149

В Laravel вы можете сделать что-то вроде этого: <a href="{{ Request::referrer() }}">Back</a>(при условии, что вы используете Blade).

Laravel 4

{{ URL::previous() }}

Laravel 5+

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

Документация Laravel

Анон
источник
Спасибо, это работает !! Не удалось найти это в документации ... есть ли еще где-нибудь, где я могу получить больше от laravel?
cosapostolo
2
Вы можете проверить документацию , использовать их форумы , просмотреть исходный код в папке laravel или повесить на их IRC-канале #laravel на freenode. Настоятельно рекомендую канал IRC многим дружелюбным и полезным людям, которые ответят на ваши вопросы днем ​​или ночью.
Anon,
21
@yannishristofakis Вы используете Laravel 4? Поведение URL изменилось, поэтому используйте URL::previous()вместо него.
Маркус Хофманн
2
Request :: header ("реферер");
Рамеш
1
Проблема с этим и подходом URL :: previous () заключается в том, что он основан на реферере http. 1) Это может быть установлено не всеми пользовательскими агентами, поэтому вы не можете полагаться на него все время. 2) Более того, если он установлен, но вы посещаете определенную страницу по ссылке на внешнем источнике, вы вернетесь к этому источнику.
morksinaanab
70

Я знаю, что это старый вопрос, но я нашел его, пока искал то же решение. Приведенное выше решение не работает в Laravel 4, однако вы можете использовать его сейчас:

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

Надеюсь, это поможет людям, которые ищут эту функцию в L4.

(Источник: https://github.com/laravel/framework/pull/501/commit )

Джош Григгс
источник
55

Laravel 5.2+, кнопка возврата

<a href="{{ url()->previous() }}" class="btn btn-default">Back</a>
Акшай Хале
источник
18

Действительно, использование {{ URL:previous() }}do работает, но если вы используете один и тот же именованный маршрут для отображения нескольких представлений, он вернет вас к первой конечной точке этого маршрута.

В моем случае у меня есть именованный маршрут, который на основе параметра, выбранного пользователем, может отображать 3 разных представления. Конечно, у меня есть случай по умолчанию для первого входа в этот маршрут, когда пользователь еще не выбрал ни одной опции.

Когда я использую URL:previous(), Laravel возвращает меня к представлению по умолчанию, даже если пользователь выбрал другой вариант. Только используя javascript внутри кнопки, я смог вернуться к правильному виду:

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

Я тестировал это на Laravel 5.3, просто для пояснения.

Тьяго Кардосо
источник
17

Ниже приводится полное решение Blade (движок шаблонов, который использует Laravel):

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

Массив параметров с классом является необязательным, в этом случае он определяет стиль для кнопки Bootstrap 3.

mike.bronner
источник
1
Необходимо изменить одну вещь, вместо {{...}} вам нужно использовать {!! ... !!} иначе строка будет экранирована.
happyhardik
1
Правда, в то время это работало в Laravel 4, прежде чем они были экранированы по умолчанию. Обновлено для работы с текущими версиями Laravel. Спасибо :)
mike.bronner
14

На 5.1 мне удалось заставить это работать.

<a href="{{ URL::previous() }}" class="btn btn-default">Back</a>
Mhankins
источник
Прекрасно работает. Спасибо, сэр!
Мэтт Инамдар
2

Один из следующих способов решит вашу проблему

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

разное

URL::current()
user9747893
источник
2

Вы можете использовать javascript для этой проблемы. Это извлекает ссылку из истории браузера.

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

Соханур Рахман
источник
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

Давидкихара
источник