En Laravel v4 pude obtener el nombre de la ruta actual usando ...
Route::currentRouteName()
¿Cómo puedo hacerlo en Laravel v5 y Laravel v6 ?
En Laravel v4 pude obtener el nombre de la ruta actual usando ...
Route::currentRouteName()
¿Cómo puedo hacerlo en Laravel v5 y Laravel v6 ?
Respuestas:
Prueba esto
Route::getCurrentRoute()->getPath();
o
\Request::route()->getName()
de v5.1
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel v5.2
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
O si necesitas el nombre de la acción
Route::getCurrentRoute()->getActionName();
Laravel 5.2 documentación de ruta
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();
El is
método le permite verificar que el URI de la solicitud entrante coincida con un patrón determinado. Puede usar 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();
Laravel v5.3 ... v5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Laravel 5.3 documentación de ruta
Laravel v6.x ... 7.x
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
** Actual a partir del 11 de noviembre de 2019 - versión 6.5 **
Documentación de ruta de Laravel 6.x
Hay una opción para usar la solicitud para obtener la ruta
$request->route()->getName();
api/...
Route::currentRouteName();
perfecto :)
$request::route()->getName()
si ya está usando la solicitud $, o puede usar el ayudante global request()::route()->getName()
.
request()->route()->getName()
es el camino a seguir.
request()
función auxiliar es particularmente útil en las vistas. request()->route()->getName()
Es la mejor opción.
Usando Laravel 5.1, puedes usar
\Request::route()->getName()
{{ route(\Request::route()->getName()) }}
. ¡Muchas gracias!
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 necesita una URL , no el nombre de la ruta , no necesita usar / requerir ninguna otra clase:
url()->current();
Si desea seleccionar el menú en varias 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.
Laravel 5.2 Puedes usar
$request->route()->getName()
Te dará el nombre de la ruta actual.
name()
método agregará o cambiará el nombre, mientras que el getName()
método lo devuelve.
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"
El camino más corto es la fachada de la ruta
\Route::current()->getName()
Esto también funciona en laravel 5.4. *
En una acción de controlador, podría hacer lo siguiente:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$request
aquí lo resuelve el contenedor de servicio de Laravel.
getName()
devuelve el nombre de ruta solo para rutas con nombre , de lo null
contrario (pero aún podría explorar el \Illuminate\Routing\Route
objeto en busca de otra cosa de interés).
En otras palabras, debe tener su ruta definida de esta manera para que se devuelva "nameOfMyRoute":
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => 'MyController@someAction'
]);
Ahora en Laravel 5.3
veo que se puede hacer de manera similar que intentaste:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
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();
Lo he usado para obtener el nombre de la ruta en larvel 5.3
Request::path()
Al mirar \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 tiene alguno de los parámetros dados, pero tenga cuidado con este método 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, preg_match()
que es un tema importante en la comunidad PHP.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
En mi opinión, la solución más fácil es usar este ayudante:
request()->route()->getName()
Para los documentos, vea este enlace
Puede usar el siguiente método:
Route::getCurrentRoute()->getPath();
En la versión Laravel> 6.0, puede usar los siguientes métodos:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Acceso al nombre de ruta actual en el controlador
es decir, http: // localhost / nombre_proyecto / editar
$ solicitud-> segmento (1); //editar
(o)
$ solicitud-> url (); // http: // localhost / nombre_proyecto / editar
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ú, sería bueno si usa
Route::currentRouteName()
para obtener el nombre de la ruta y comparar
Por alguna razón, no pude usar ninguna de estas soluciones. por lo que acaba de declarar mi ruta de web.php
como $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
y en mi controlador me dieron el nombre de la ruta mediante $routeName = $request->route()[1]['as'];
la cual $request
se \Illuminate\Http\Request $request
typehinted parámetro en index
el método deUserController
utilizando Lumen 5.6. Espero que ayude a alguien.
Solución:
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
Puede usar el siguiente código para obtener el nombre de la ruta en el archivo Blade
request()->route()->uri