/
記号なしで現在のURLの最後の部分を動的に取得する方法は?
例えば:
www.news.com/foo/bar
でbar
を取得します。
www.news.com/foo/bar/fun
でfun
を取得します。
関数をどこに配置するか、現在のビューでこれを実装する方法は?
ルートオブジェクト は、必要な情報のソースです。情報を取得する方法はいくつかありますが、そのほとんどはビューに何かを渡すことです。これはコントローラーアクションの目的であるため、ブレード内で作業を行わないことを強くお勧めします。
値をブレードに渡す
最も簡単な方法は、ルートの最後の部分をパラメーターにして、その値をビューに渡すことです。
// 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>.
もちろん、常にLaravelの方法があります:
request()->segment(count(request()->segments()))
これは私がやった方法です:
{{ collect(request()->segments())->last() }}
basename()
をRequest::path()
とともに使用します。
_basename(request()->path())
_
request()
はLaravelのグローバルヘルパー関数であり、basename()
は標準のPHPであるため、コードのどこからでも呼び出すことができるはずです。 _関数もグローバルに利用可能です。
Laravelのヘルパー関数last
を使用できます。そのようです:
last(request()->segments())
request()->segment($number)
を試してください。URLのセグメントが表示されます。
あなたの例では、おそらくURLのセグメント数に基づいてrequest()->segment(2)
またはrequest()->segment(3)
になっているはずです。
それは私にとって有用でした:
request()->path()
www.test.site/newsから
入手->ニュース