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 ismé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:
¿Tiene una idea de cómo filtrar esto, por ejemplo, si uno solo quiere imprimir en la vista de rutas de APIapi/...
Utdev
66
Route::currentRouteName();perfecto :)
EM-Creations
$request::route()->getName()si ya está usando la solicitud $, o puede usar el ayudante global request()::route()->getName().
Daniel Dewhurst
@Daniel Dewhurst: Tal vez funcione en v <5.7, pero con v5.7 no debe usarlo estáticamente, en cambio, request()->route()->getName()es el camino a seguir.
1stthomas
55
El uso de la request()función auxiliar es particularmente útil en las vistas. request()->route()->getName()Es la mejor opción.
Esto devuelve un error: "Llamar a una función miembro current () en un no objeto". url () devuelve una cadena, no un objeto, por lo que no creo que esto haya funcionado. ¿Quizás estaba pensando en algún otro método u objeto, en lugar de url ()?
$request aquí lo resuelve el contenedor de servicio de Laravel.
getName()devuelve el nombre de ruta solo para rutas con nombre , de lo nullcontrario (pero aún podría explorar el \Illuminate\Routing\Routeobjeto en busca de otra cosa de interés).
En otras palabras, debe tener su ruta definida de esta manera para que se devuelva "nameOfMyRoute":
Gracias por una respuesta adecuada, perdí 30 minutos intentando sugerencias inútiles.
Crasher
3
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:
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.
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.
Por alguna razón, no pude usar ninguna de estas soluciones. por lo que acaba de declarar mi ruta de web.phpcomo $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 $requestse \Illuminate\Http\Request $requesttypehinted parámetro en indexel método deUserController
Respuestas:
Prueba esto
o
de v5.1
Laravel v5.2
O si necesitas el nombre de la acción
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
: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:Para obtener la URL completa, no solo la información de la ruta, puede usar el método url en la instancia de solicitud:
Laravel v5.3 ... v5.8
Laravel 5.3 documentación de ruta
Laravel v6.x ... 7.x
** 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
fuente
api/...
Route::currentRouteName();
perfecto :)$request::route()->getName()
si ya está usando la solicitud $, o puede usar el ayudante globalrequest()::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
fuente
{{ 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
y
Para Laravel laravel v5.3 puedes usar:
fuente
Si necesita una URL , no el nombre de la ruta , no necesita usar / requerir ninguna otra clase:
fuente
Si desea seleccionar el menú en varias rutas, puede hacer lo siguiente:
O si desea seleccionar un solo menú, simplemente puede hacer lo siguiente:
También probado en Laravel 5.2
Espero que esto ayude a alguien.
fuente
Laravel 5.2 Puedes usar
Te dará el nombre de la ruta actual.
fuente
name()
método agregará o cambiará el nombre, mientras que elgetName()
método lo devuelve.En 5.2, puede usar la solicitud directamente con:
o mediante el método auxiliar:
Ejemplo de salida:
fuente
El camino más corto es la fachada de la ruta
\Route::current()->getName()
Esto también funciona en laravel 5.4. *
fuente
En una acción de controlador, podría hacer lo siguiente:
$request
aquí lo resuelve el contenedor de servicio de Laravel.getName()
devuelve el nombre de ruta solo para rutas con nombre , de lonull
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":
fuente
Puedes usar en la plantilla:
fuente
Ahora en Laravel
5.3
veo que se puede hacer de manera similar que intentaste:https://laravel.com/docs/5.3/routing#accessing-the-current-route
fuente
Accediendo a la ruta actual
Obtener el nombre de la ruta actual en las plantillas Blade
para más información https://laravel.com/docs/5.5/routing#accessing-the-current-route
fuente
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:
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
fuente
Request::path();
es mejor, y recuerdause Request;
fuente
fuente
Lo he usado para obtener el nombre de la ruta en larvel 5.3
Request::path()
fuente
Al mirar
\Illuminate\Routing\Router.php
, puede usar el métodocurrentRouteNamed()
inyectando un enrutador en el método de su controlador. Por ejemplo:o usando la fachada de la ruta:
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étodopreg_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.fuente
En mi opinión, la solución más fácil es usar este ayudante:
Para los documentos, vea este enlace
fuente
Puede usar el siguiente método:
En la versión Laravel> 6.0, puede usar los siguientes métodos:
fuente
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
fuente
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 compararfuente
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 enindex
el método deUserController
utilizando Lumen 5.6. Espero que ayude a alguien.
fuente
Solución:
fuente
Puede usar el siguiente código para obtener el nombre de la ruta en el archivo Blade
fuente