Comment obtenir la dernière partie de l'URL actuelle sans le /
signe, dynamiquement?
Par exemple:
Dans www.news.com/foo/bar
get bar
.
Dans www.news.com/foo/bar/fun
get fun
.
Où placer la fonction ou comment l'implémenter dans la vue actuelle?
objet Route est la source des informations que vous souhaitez. Il existe plusieurs façons d'obtenir les informations et la plupart impliquent de transmettre quelque chose à votre vue. Je suggère fortement de ne pas faire le travail dans la lame car c'est à cela que servent les actions du contrôleur.
Passage d'une valeur à la lame
Le moyen le plus simple consiste à faire de la dernière partie de l'itinéraire un paramètre et à transmettre cette valeur à la vue.
// 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>.
Éviter les paramètres d'itinéraire nécessite un peu plus de travail.
// 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>.
Tout faire dans la lame en utilisant assistant de demande .
// 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>.
Bien sûr, il y a toujours la manière Laravel:
request()->segment(count(request()->segments()))
Voici comment je l'ai fait:
{{ collect(request()->segments())->last() }}
Utilisez basename()
avec Request::path()
.
basename(request()->path())
Vous devriez pouvoir l'appeler de n'importe où dans votre code puisque request()
est une fonction d'assistance globale dans Laravel et basename()
est un standard PHP qui est également disponible dans le monde entier.
Vous pouvez utiliser la fonction d'assistance de Laravel last
. Ainsi:
last(request()->segments())
Essayez request()->segment($number)
il devrait vous donner un segment de l'URL.
Dans votre exemple, il doit probablement s'agir de request()->segment(2)
ou request()->segment(3)
en fonction du nombre de segments de l'URL.
Cela m'a été utile:
request()->path()
sur www.test.site/news
obtenir -> nouvelles