Nút quay lại Laravel


84

Tôi đang cố gắng tạo một nút quay lại đơn giản trên một trang. Người dùng có thể đến trang này từ hai trang khác nhau, vì vậy tôi muốn biết anh ta đến từ trang nào. Điều đó có thể không?


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

Câu trả lời:


143

Trong Laravel, bạn có thể làm như sau: <a href="{{ Request::referrer() }}">Back</a>(giả sử bạn đang sử dụng Blade).

Laravel 4

{{ URL::previous() }}

Laravel 5+

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

Tài liệu về Laravel


Cảm ơn công trình này !! Không thể tìm thấy điều này trong tài liệu ... có nơi nào khác mà tôi có thể khai thác thêm từ laravel không?
cosapostolo

2
Bạn có thể xem tài liệu , sử dụng diễn đàn của họ , duyệt nguồn trong thư mục laravel hoặc treo trong kênh IRC #laravel của họ trên freenode. Rất khuyến khích kênh IRC có nhiều người thân thiện và hữu ích để trả lời các câu hỏi của bạn, dù ngày hay đêm.
Anon

21
@yannishristofakis Bạn có đang sử dụng Laravel 4 không? Hành vi URL đã thay đổi, vì vậy hãy sử dụng URL::previous()thay thế.
Markus Hofmann

2
Request :: header ("liên kết giới thiệu");
Ramesh

1
vấn đề với điều này và cách tiếp cận URL :: before () là nó dựa trên liên kết giới thiệu http. 1) Điều này có thể không được đặt bởi tất cả các tác nhân người dùng, vì vậy bạn không thể dựa vào nó mọi lúc. 2) Hơn nữa, nếu nó đã được đặt nhưng bạn truy cập trang cụ thể từ một liên kết trên một nguồn bên ngoài, bạn sẽ quay lại nguồn đó.
morksinaanab

70

Tôi biết đây là một câu hỏi cũ nhưng tôi đã tìm thấy nó trong khi tìm kiếm giải pháp tương tự. Giải pháp trên dường như không hoạt động trong Laravel 4, tuy nhiên bạn có thể sử dụng giải pháp này ngay bây giờ:

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

Hy vọng điều này sẽ giúp những người tìm kiếm tính năng này trong L4

(Nguồn: https://github.com/laravel/framework/pull/501/commits )


55

Laravel 5.2+, nút quay lại

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

17

Sau đây là giải pháp hoàn chỉnh của Blade (công cụ tạo khuôn mẫu mà Laravel sử dụng):

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

Mảng tùy chọn với lớp là tùy chọn, trong trường hợp này, nó chỉ định kiểu cho nút Bootstrap 3.


1
Có một điều cần thay đổi, thay vì {{...}} bạn cần sử dụng {!! ... !!} nếu không chuỗi sẽ bị thoát.
happyhardik

1
Đúng, tại thời điểm này, nó hoạt động trong Laravel 4 trước khi chúng bị thoát theo mặc định. Đã cập nhật để hoạt động với các phiên bản Laravel hiện tại. Cảm ơn :)
mike.bronner

17

Thật vậy bằng cách sử dụng {{ URL:previous() }}do work, nhưng nếu bạn đang sử dụng cùng một tuyến đường được đặt tên để hiển thị nhiều chế độ xem, nó sẽ đưa bạn trở lại điểm cuối đầu tiên của tuyến đường này.

Trong trường hợp của tôi, tôi có một tuyến đường được đặt tên, dựa trên tham số do người dùng chọn, có thể hiển thị 3 chế độ xem khác nhau. Tất nhiên, tôi có một trường hợp mặc định cho lần nhập đầu tiên trong tuyến đường này, khi người dùng chưa chọn bất kỳ tùy chọn nào.

Khi tôi sử dụng URL:previous(), Laravel sẽ đưa tôi trở lại chế độ xem mặc định, ngay cả khi người dùng đã chọn một số tùy chọn khác. Chỉ sử dụng javascript bên trong nút tôi đã hoàn thành để được trả về chế độ xem chính xác:

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

Tôi đã thử nghiệm điều này trên Laravel 5.3, chỉ để làm rõ.


14

Vào ngày 5.1, tôi chỉ có thể làm cho điều này hoạt động.

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

Hoạt động hoàn hảo. Cảm ơn ngài!
Matt Inamdar

2

Một trong những cách dưới đây giải quyết vấn đề của bạn

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

khác

URL::current()

2

Bạn có thể sử dụng javascript cho vấn đề này. Nó truy xuất liên kết từ lịch sử trình duyệt.

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


0

Bạn có thể sử dụng {{URL :: before ()}} nhưng nó không phải là UX hoàn hảo.

Ví dụ: khi bạn nhấn nút F5 và nhấp lại vào Nút Quay lại với {{URL :: before ()}}, bạn sẽ ở lại.

Một cách hay là sử dụng {{route ('page.edit', $ item-> id)}}, đây luôn là trang đúng mà bạn muốn chuyển hướng.


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

Điều này hoạt động trong Laravel 5.8

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.