2016-06-19 13 views
5

'/'なしで現在のURLの最後の部分を取得するにはどうすればよいですか?Bladeを使用してLaravel 5の現在のURLの最後の部分を取得します

例:

www.news.com/foo/bar
GET - >バー

www.news.com/foo/bar/fun
GET - >楽しい

関数を配置する場所、または現在のビューでこれを実装する方法は?

+0

https://laravel.com/api/5.2/Illuminate/Contracts/Routing/UrlGenerator.html#method_current Laravelのヘルパー関数を使用して、部品を得るために正規表現を行います –

+0

ありがとう、私に例を教えてもらえますか? –

+0

あなたが思い付いたコードを投稿すると、私はあなたを助けます。 –

答えて

4

Route objectは、必要な情報源です。情報を得る方法はいくつかあり、そのほとんどはあなたの視点に何かを渡すことです。私は、これがコントローラのアクションのためのものであるため、ブレード内で作業をしないことを強くお勧めします。

は、最も簡単な方法は、ルートの最後の部分にパラメータを作成し、ビューにその値を渡すことであるブレード

に値を渡します。

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

もう少し作業が必要です。 request helperを使用してブレードでそれをすべて行う

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

。もちろん

// 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

試してみてください。request()->segment($number) URLのセグメントが必要です。

例では、URLのセグメント数に基づいて、おそらくrequest()->segment(2)またはrequest()->segment(3)になるはずです。

-1

はして試してみてください。

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

それはうまく動作するはずです。

+1

rtrimを追加して、必要に応じて最後のスラッシュを削除します。 –

11

Laravelの方法が常にある:

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

私の最初の考えはまさに1行のコード;-)簡単に理解できる –

0

それは私のために有用であった:

request()->path() 

GET www.test.site/newsから - >ニュース

+0

これまでの最も単純な解決方法 – Farveaz

+1

blablaではなくexample/blabla –

5

これは私がそれをした方法です:

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

Request::path()と一緒にbasename()を使用してください。

basename(request()->path()) 

あなたはrequest()はLaravelのグローバルヘルパー関数であり、basename()は世界的にも利用可能である標準のPHP関数ですので、どこでも、あなたのコード内からそのを呼び出すことができるはずです。

0

'最後の'

last(request()->segments())

関連する問題