2016-06-19 19 views
5

Làm cách nào để lấy phần cuối cùng của URL hiện tại mà không có '/' động?Lấy phần cuối cùng của URL hiện tại trong Laravel 5 bằng cách sử dụng Blade

ví dụ:

www.news.com/foo/bar
get -> thanh

www.news.com/foo/bar/fun
get -> vui vẻ

Nơi đặt hàm hoặc cách triển khai hàm này trong chế độ xem hiện tại?

+0

https://laravel.com/api/5.2/Illuminate/Contracts/Routing/UrlGenerator.html#method_current và làm một regex để có được những phần –

+0

Cảm ơn, bạn có thể cho tôi một ví dụ không? –

+0

nếu bạn đăng mã kiểm tra với những gì bạn đã đưa ra, tôi sẽ giúp bạn. –

Trả lời

4

Route object là nguồn thông tin bạn muốn. Có một vài cách mà bạn có thể nhận được thông tin và hầu hết trong số họ liên quan đến việc truyền đạt điều gì đó cho quan điểm của bạn. Tôi mạnh mẽ đề nghị không làm công việc trong lưỡi dao vì đây là hành động của bộ điều khiển.

Đi qua một giá trị cho lưỡi

Cách đơn giản nhất là làm cho phần cuối cùng của con đường một tham số và vượt qua giá trị đó để xem.

// app/Http/routes.php 
Route::get('/test/{uri_tail}', function ($uri_tail) { 
    return view('example')->with('uri_tail', $uri_tail); 
}); 

// resources/views/example.blade.php 
The last part of the route URI is <b>{{ $uri_tail }}</b>. 

Tránh các thông số tuyến đường đòi hỏi nhiều công việc hơn một chút.

// app/Http/routes.php 
Route::get('/test/uri-tail', function (Illuminate\Http\Request $request) { 
    $route = $request->route(); 
    $uri_path = $route->getPath(); 
    $uri_parts = explode('/', $uri_path); 
    $uri_tail = end($uri_parts); 

    return view('example2')->with('uri_tail', $uri_tail); 
}); 

// resources/views/example2.blade.php 
The last part of the route URI is <b>{{ $uri_tail }}</b>. 

Làm nó tất cả trong lưỡi sử dụng request helper.

// app/Http/routes.php 
Route::get('/test/uri-tail', function() { 
    return view('example3'); 
}); 

// resources/views/example3.blade.php 
The last part of the route URI is <b>{{ array_slice(explode('/', request()->route()->getPath()), -1, 1) }}</b>. 
3

Hãy thử request()->segment($number) URL sẽ cung cấp cho bạn một đoạn URL.

Trong ví dụ của bạn, có thể là request()->segment(2) hoặc request()->segment(3) dựa trên số lượng phân đoạn mà URL có.

-1

Hãy thử với:

{{ array_pop(explode('/',$_SERVER['REQUEST_URI'])) }} 

Nó sẽ làm việc tốt.

+1

Đồng thời thêm rtrim để xóa dấu gạch chéo cuối cùng nếu cần. –

11

Tất nhiên luôn luôn có cách Laravel:

request()->segment(count(request()->segments())) 
+0

Suy nghĩ đầu tiên của tôi chính xác, một dòng mã ;-) đơn giản để hiểu –

0

Đó là hữu ích cho tôi:

request()->path() 

từ www.test.site/news

get - > tin tức

+0

giải pháp đơn giản nhất cho đến nay – Farveaz

+1

Điều này đôi khi trả về một phần bổ sung của liên kết: example/blabla thay vì blabla –

5

Đây là cách tôi đã thực hiện:

{{ collect(request()->segments())->last() }} 
7

Sử dụng basename() cùng với Request::path().

basename(request()->path()) 

Bạn sẽ có thể gọi đó là từ bất cứ nơi nào trong mã của bạn vì request() là một hàm helper toàn cầu trong Laravel và basename() là một hàm PHP tiêu chuẩn mà cũng có sẵn trên toàn cầu.

0

sử dụng chức năng helper Laravel của 'cuối cùng'

last(request()->segments())

Các vấn đề liên quan