for - Obtenga la última parte de la URL actual en Laravel 5 usando Blade
laravel foreach index (7)
¿Cómo obtener la última parte de la URL actual sin el ''/'' de forma dinámica?
p.ej:
www.news.com/foo/bar
obtener -> barra
www.news.com/foo/bar/fun
obtener -> diversión
¿Dónde poner la función o cómo implementar esto en la vista actual?
El objeto Route es la fuente de la información que desea. Hay algunas maneras en que puede obtener la información y la mayoría de ellas implican pasar algo a su vista. Recomiendo encarecidamente no hacer el trabajo dentro del blade, ya que para eso son las acciones del controlador.
Pasando un valor a la cuchilla
La forma más fácil es convertir la última parte de la ruta en un parámetro y pasar ese valor a la vista.
// 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>.
Evitar los parámetros de ruta requiere un poco más de trabajo.
// 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>.
Haciendo todo en la cuchilla usando el asistente de solicitud .
// 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>.
Prueba con:
{{ array_pop(explode(''/'',$_SERVER[''REQUEST_URI''])) }}
Debería funcionar bien.
Pruebe request()->segment($number)
debería darle un segmento de la URL.
En su ejemplo, probablemente debería ser request()->segment(2)
o request()->segment(3)
función del número de segmentos que tiene la URL.
Por supuesto, siempre existe la forma de Laravel:
request()->segment(count(request()->segments()))
Fue útil para mí:
request()->path()
de www.test.site/news
obtener -> noticias
Así es como lo hice:
{{ collect(request()->segments())->last() }}
Use basename()
junto con Request::path()
.
basename(request()->path())
Debería poder invocarlo desde cualquier lugar de su código, ya que request()
es una función auxiliar global en Laravel y basename()
es una función PHP estándar que también está disponible en todo el mundo.