web-dev-qa-db-ja.com

Bladeを使用してLaravel 5で現在のURLの最後の部分を取得する

/記号なしで現在のURLの最後の部分を動的に取得する方法は?

例えば:

www.news.com/foo/barbarを取得します。

www.news.com/foo/bar/funfunを取得します。

関数をどこに配置するか、現在のビューでこれを実装する方法は?

10
Ronald Zwiers

ルートオブジェクト は、必要な情報のソースです。情報を取得する方法はいくつかありますが、そのほとんどはビューに何かを渡すことです。これはコントローラーアクションの目的であるため、ブレード内で作業を行わないことを強くお勧めします。

値をブレードに渡す

最も簡単な方法は、ルートの最後の部分をパラメーターにして、その値をビューに渡すことです。

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

ルートパラメータを回避するには、もう少し作業が必要です。

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

すべてをブレードで行う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>.
8
Qevo

もちろん、常にLaravelの方法があります:

request()->segment(count(request()->segments()))
31
user2094178

これは私がやった方法です:

{{ collect(request()->segments())->last() }}
12
JRoss

basename()Request::path()とともに使用します。

_basename(request()->path())
_

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

8

Laravelのヘルパー関数lastを使用できます。そのようです:

last(request()->segments())

7
yama

request()->segment($number)を試してください。URLのセグメントが表示されます。

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

4
Ruffles

それは私にとって有用でした:

request()->path()

www.test.site/newsから

入手->ニュース

0
Paul Basenko