web-dev-qa-db-fra.com

Récupère la dernière partie de l'URL actuelle dans Laravel 5 en utilisant Blade

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?

10
Ronald Zwiers

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>.
8
Qevo

Bien sûr, il y a toujours la manière Laravel:

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

Voici comment je l'ai fait:

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

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.

8
Erik Berkun-Drevnig

Vous pouvez utiliser la fonction d'assistance de Laravel last. Ainsi:

last(request()->segments())

7
yama

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.

4
Ruffles

Cela m'a été utile:

request()->path()

sur www.test.site/news

obtenir -> nouvelles

0
Paul Basenko