php - route - ¿Cómo obtener el nombre de la ruta actual?
route laravel blade (21)
Ahora en Laravel
5.3
veo que se puede hacer de manera similar que intentaste:
Route::get(''my/some-action'', [
''as'' => ''nameOfMyRoute'',
''uses'' => ''MyController@someAction''
]);
https://laravel.com/docs/5.3/routing#accessing-the-current-route
En Laravel 4 pude obtener el nombre de la ruta actual usando ...
Route::currentRouteName()
¿Cómo puedo hacerlo en Laravel 5?
El camino más corto es Ruta fachada
/Route::current()->getName()
Esto también funciona en laravel 5.4. *
En 5.2, puede usar la solicitud directamente con:
$request->route()->getName();
o mediante el método auxiliar:
request()->route()->getName();
Ejemplo de salida:
"home.index"
En mi opinión, la solución más fácil es usar este ayudante:
request()->route()->getName()
Para los documentos, vea este enlace
En un archivo auxiliar,
Puede usar
Route::current()->uri()
para obtener la URL actual.
Por lo tanto, si compara el nombre de su ruta para establecer la clase activa en el menú, entonces sería bueno si usa
Route::currentRouteName()
para obtener el nombre de la ruta y comparar
En una acción de controlador, podría hacer lo siguiente:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
$request
aquí es resuelta por el contenedor de servicio de Laravel.
getName()
devuelve el nombre de la
ruta
solo para
rutas con nombre
, de lo contrario es
null
(pero aún podría explorar el objeto
/Illuminate/Routing/Route
busca de algo más de interés).
En otras palabras, debe tener su ruta definida así para que se devuelva "nameOfMyRoute":
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
He usado para obtener el nombre de la ruta en larvel 5.3
Request::path()
Laravel 5.2 Puedes usar
$request->route()->getName()
Te dará el nombre de la ruta actual.
Mirando
/Illuminate/Routing/Router.php
puede usar el método
currentRouteNamed()
inyectando un enrutador en el método de su controlador.
Por ejemplo:
use Illuminate/Routing/Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed(''foo'') ? ''view1'' : ''view2'');
}
o usando la fachada de la ruta:
public function index(Request $request) {
return view(/Route::currentRouteNamed(''foo'') ? ''view1'' : ''view2'');
}
También podría usar el método
is()
para verificar si la ruta se nombra con alguno de los parámetros dados, pero tenga en cuenta que este método usa
preg_match()
y he experimentado que causa un comportamiento extraño con nombres de ruta punteados (como
''foo.bar.done''
).
También está la cuestión del rendimiento en torno a
preg_match()
que es un gran tema en la comunidad PHP.
public function index(Request $request) {
return view(/Route::is(''foo'', ''bar'') ? ''view1'' : ''view2'');
}
Por alguna razón, no pude usar ninguna de estas soluciones.
así que acabo de declarar mi ruta en
web.php
como
$router->get(''/api/v1/users'', [''as'' => ''index'', ''uses'' => ''UserController@index''])
y en mi controlador
$routeName = $request->route()[1][''as''];
el nombre de la ruta usando
$routeName = $request->route()[1][''as''];
que
$request
es
/Illuminate/Http/Request $request
typehinted parámetro en el método de
index
de
UserController
utilizando Lumen 5.6. Espero que ayude a alguien.
Prueba esto
Route::getCurrentRoute()->getPath();
o
/Request::route()->getName()
de v5. +
use Illuminate/Support/Facades/Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel 5.3
Route::currentRouteName(); //use Illuminate/Support/Facades/Route;
O si necesitas el nombre de la acción
Route::getCurrentRoute()->getActionName();
Puede encontrar todo sobre las rutas de laravel en la API de Laravel: http://laravel.com/api/5.0/Illuminate/Routing/Router.html http://laravel.com/api/5.0/Illuminate/Routing.html
Recuperando el URI de solicitud
El método de ruta devuelve el URI de la solicitud.
Entonces, si la solicitud entrante está dirigida a
http://example.com/foo/bar
, el método de ruta devolverá
foo/bar
:
$uri = $request->path();
Este método le permite verificar que el URI de la solicitud entrante coincida con un patrón determinado.
Puede utilizar el carácter
*
como comodín cuando utilice este método:
if ($request->is(''admin/*'')) {
//
}
Para obtener la URL completa, no solo la información de la ruta, puede usar el método url en la instancia de solicitud:
$url = $request->url();
Para Laravel 5.2 y 5.3
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
Documentación de ruta Laravel 5.2
Hay una opción para usar la solicitud para obtener la ruta
$request->route()->getName();
Puedes usar en la plantilla:
<?php $path = Route::getCurrentRoute()->getPath(); ?>
<?php if (starts_with($path, ''admin/'')) echo "active"; ?>
Se encontró una manera de encontrar el nombre de ruta actual que funciona para laravel v5 , v5.1.28 y v5.2.10
Espacio de nombres
use Illuminate/Support/Facades/Route;
y
$currentPath= Route::getFacadeRoot()->current()->uri();
Para Laravel laravel v5.3 puedes usar:
use Illuminate/Support/Facades/Route;
Route::currentRouteName();
Si desea seleccionar el menú en múltiples rutas, puede hacer lo siguiente:
<li class="{{ (Request::is(''products/*'') || Request::is(''products'') || Request::is(''product/*'') ? ''active'' : '''') }}"><a href="{{url(''products'')}}"><i class="fa fa-code-fork"></i> Products</a></li>
O si desea seleccionar un solo menú, simplemente puede hacer lo siguiente:
<li class="{{ (Request::is(''/users'') ? ''active'' : '''') }}"><a href="{{url(''/'')}}"><i class="fa fa-envelope"></i> Users</a></li>
También probado en Laravel 5.2
Espero que esto ayude a alguien.
Si necesita una URL , no un nombre de ruta , no necesita usar / requerir ninguna otra clase:
url()->current();
Solución:
$routeArray = app(''request'')->route()->getAction();
$controllerAction = class_basename($routeArray[''controller'']);
list($controller, $route) = explode(''@'', $controllerAction);
echo $route;
Usando Laravel 5.1, puedes usar
/Request::route()->getName()
Request::path();
es mejor, y recuerde
Use Request;
Accediendo a la ruta actual
Obtener el nombre de la ruta actual en las plantillas Blade
{{ Route::currentRouteName() }}
para más información https://laravel.com/docs/5.5/routing#accessing-the-current-route
Acceso a la ruta actual (v5.3 en adelante)
Puede usar los métodos current, currentRouteName y currentRouteAction en la fachada de la ruta para acceder a información sobre la ruta que maneja la solicitud entrante:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Consulte la documentación de la API tanto para la clase subyacente de la fachada de la ruta como para la instancia de la ruta para revisar todos los métodos accesibles.
Referencia: https://laravel.com/docs/5.2/routing#accessing-the-current-route
$request->route()->getName();