La méthode path renvoie l'URI de la demande. Donc, si la demande entrante est ciblée http://example.com/foo/bar, la méthode path retournera foo/bar:
$uri = $request->path();
La isméthode vous permet de vérifier que l'URI de la demande entrante correspond à un modèle donné. Vous pouvez utiliser le *caractère comme caractère générique lorsque vous utilisez cette méthode:
if($request->is('admin/*')){//}
Pour obtenir l'URL complète, pas seulement les informations de chemin, vous pouvez utiliser la méthode url sur l'instance de demande:
Avez-vous une idée de comment filtrer cela par exemple si l'on veut seulement imprimer dans les routes de vue apiapi/...
utdev
6
Route::currentRouteName();parfait :)
EM-Creations
$request::route()->getName()si vous utilisez déjà la demande $, ou vous pouvez utiliser l'assistant global request()::route()->getName().
Daniel Dewhurst
@Daniel Dewhurst: Peut-être que cela fonctionne sur v <5.7, mais avec v5.7 vous ne devez pas l'utiliser statiquement, c'est plutôt request()->route()->getName()la voie à suivre.
1stthomas
5
L'utilisation de la request()fonction d'assistance est particulièrement utile dans les vues. request()->route()->getName()est la meilleure option.
Cela renvoie une erreur: "Appel à une fonction membre current () sur un non-objet". url () renvoie une chaîne, pas un objet, donc je ne pense pas que cela aurait pu fonctionner. Peut-être pensiez-vous à une autre méthode ou un autre objet, au lieu de url ()?
$request ici est résolu par le conteneur de service de Laravel.
getName()renvoie le nom de la route pour les routes nommées uniquement, nullsinon (mais vous pouvez toujours explorer l' \Illuminate\Routing\Routeobjet pour quelque chose d'autre d'intérêt).
En d'autres termes, vous devriez avoir votre itinéraire défini comme ceci pour que "nameOfMyRoute" soit renvoyé:
Merci pour une bonne réponse, perdu 30 minutes à essayer des suggestions inutiles.
Crasher
3
Accès à l'itinéraire actuel (à partir de la v5.3)
Vous pouvez utiliser les méthodes current, currentRouteName et currentRouteAction sur la façade Route pour accéder aux informations sur l'itinéraire gérant la demande entrante:
Reportez-vous à la documentation de l'API pour la classe sous-jacente de la façade Route et de l'instance Route pour passer en revue toutes les méthodes accessibles.
En regardant, \Illuminate\Routing\Router.phpvous pouvez utiliser la méthode currentRouteNamed()en injectant un routeur dans votre méthode de contrôleur. Par exemple:
Vous pouvez également utiliser la méthode is()pour vérifier si la route est nommée l'un des paramètres donnés, mais méfiez-vous que cette méthode utilise preg_match()et je l'ai expérimenté pour provoquer un comportement étrange avec les noms de route en pointillés (comme 'foo.bar.done'). Il y a aussi la question des performances preg_match()
qui est un gros sujet dans la communauté PHP.
pour certaines raisons, je n'ai pu utiliser aucune de ces solutions. donc je viens de déclarer ma route en web.phptant que $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])et dans mon contrôleur, j'ai obtenu le nom de la route en utilisant $routeName = $request->route()[1]['as'];ce qui $requestest le \Illuminate\Http\Request $requestparamètre de typehinted dans la indexméthode deUserController
en utilisant Lumen 5.6. J'espère que cela aiderait quelqu'un.
Réponses:
Essaye ça
ou
à partir de la v5.1
Laravel v5.2
Ou si vous avez besoin du nom de l'action
Documentation d'itinéraire Laravel 5.2
Récupération de l'URI de la demande
La méthode path renvoie l'URI de la demande. Donc, si la demande entrante est ciblée
http://example.com/foo/bar
, la méthode path retournerafoo/bar
:La
is
méthode vous permet de vérifier que l'URI de la demande entrante correspond à un modèle donné. Vous pouvez utiliser le*
caractère comme caractère générique lorsque vous utilisez cette méthode:Pour obtenir l'URL complète, pas seulement les informations de chemin, vous pouvez utiliser la méthode url sur l'instance de demande:
Laravel v5.3 ... v5.8
Documentation d'itinéraire Laravel 5.3
Laravel v6.x ... 7.x
** À jour au 11 novembre 2019 - version 6.5 **
Documentation d'itinéraire Laravel 6.x
Il y a une option pour utiliser la demande pour obtenir l'itinéraire
la source
api/...
Route::currentRouteName();
parfait :)$request::route()->getName()
si vous utilisez déjà la demande $, ou vous pouvez utiliser l'assistant globalrequest()::route()->getName()
.request()->route()->getName()
la voie à suivre.request()
fonction d'assistance est particulièrement utile dans les vues.request()->route()->getName()
est la meilleure option.En utilisant Laravel 5.1, vous pouvez utiliser
la source
{{ route(\Request::route()->getName()) }}
. Merci beaucoup!Trouver un moyen de trouver le nom de l'itinéraire actuel fonctionne pour laravel v5 , v5.1.28 et v5.2.10
Espace de noms
et
Pour Laravel laravel v5.3, vous pouvez simplement utiliser:
la source
Si vous avez besoin d'une URL , pas d'un nom de route , vous n'avez pas besoin d'utiliser / d'exiger d'autres classes:
la source
Si vous souhaitez sélectionner le menu sur plusieurs itinéraires, vous pouvez faire ceci:
Ou si vous voulez sélectionner un seul menu, vous pouvez simplement faire comme ceci:
Également testé dans Laravel 5.2
J'espère que cela aidera quelqu'un.
la source
Laravel 5.2 Vous pouvez utiliser
Il vous donnera le nom de l'itinéraire actuel.
la source
name()
méthode ajoute ou modifie le nom, tandis que lagetName()
méthode le renvoie.Dans 5.2, vous pouvez utiliser la demande directement avec:
ou via la méthode d'assistance:
Exemple de sortie:
la source
Le chemin le plus court est la façade de la Route
\Route::current()->getName()
Cela fonctionne également dans laravel 5.4. *
la source
Dans une action de contrôleur, vous pouvez simplement faire:
$request
ici est résolu par le conteneur de service de Laravel.getName()
renvoie le nom de la route pour les routes nommées uniquement,null
sinon (mais vous pouvez toujours explorer l'\Illuminate\Routing\Route
objet pour quelque chose d'autre d'intérêt).En d'autres termes, vous devriez avoir votre itinéraire défini comme ceci pour que "nameOfMyRoute" soit renvoyé:
la source
Vous pouvez utiliser dans le modèle:
la source
Maintenant, à Laravel,
5.3
je vois que cela peut être fait de la même manière que vous avez essayé:https://laravel.com/docs/5.3/routing#accessing-the-current-route
la source
Accéder à l'itinéraire actuel
Obtenir le nom de l'itinéraire actuel dans les modèles de lame
pour plus d'informations https://laravel.com/docs/5.5/routing#accessing-the-current-route
la source
Accès à l'itinéraire actuel (à partir de la v5.3)
Vous pouvez utiliser les méthodes current, currentRouteName et currentRouteAction sur la façade Route pour accéder aux informations sur l'itinéraire gérant la demande entrante:
Reportez-vous à la documentation de l'API pour la classe sous-jacente de la façade Route et de l'instance Route pour passer en revue toutes les méthodes accessibles.
Référence: https://laravel.com/docs/5.2/routing#accessing-the-current-route
la source
Request::path();
est mieux, et n'oubliez pas deuse Request;
la source
la source
J'ai utilisé pour obtenir le nom de l'itinéraire dans larvel 5.3
Request::path()
la source
En regardant,
\Illuminate\Routing\Router.php
vous pouvez utiliser la méthodecurrentRouteNamed()
en injectant un routeur dans votre méthode de contrôleur. Par exemple:ou en utilisant la façade Route:
Vous pouvez également utiliser la méthode
is()
pour vérifier si la route est nommée l'un des paramètres donnés, mais méfiez-vous que cette méthode utilisepreg_match()
et je l'ai expérimenté pour provoquer un comportement étrange avec les noms de route en pointillés (comme'foo.bar.done'
). Il y a aussi la question des performancespreg_match()
qui est un gros sujet dans la communauté PHP.la source
À mon avis, la solution la plus simple consiste à utiliser cet assistant:
Pour les documents, voir ce lien
la source
Vous pouvez utiliser la méthode ci-dessous:
Dans la version Laravel> 6.0, vous pouvez utiliser les méthodes ci-dessous:
la source
Accès au nom de l'itinéraire actuel dans le contrôleur
c'est-à-dire : http: // localhost / project_name / edit
$ request-> segment (1); //Éditer
(ou)
$ request-> url (); // http: // localhost / project_name / edit
la source
Dans un fichier d'assistance,
Vous pouvez utiliser
Route::current()->uri()
pour obtenir l'URL actuelle.Par conséquent, si vous comparez le nom de votre itinéraire pour définir la classe active dans le menu, ce serait bien si vous utilisez
Route::currentRouteName()
pour obtenir le nom de l'itinéraire et comparerla source
pour certaines raisons, je n'ai pu utiliser aucune de ces solutions. donc je viens de déclarer ma route en
web.php
tant que$router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
et dans mon contrôleur, j'ai obtenu le nom de la route en utilisant$routeName = $request->route()[1]['as'];
ce qui$request
est le\Illuminate\Http\Request $request
paramètre de typehinted dans laindex
méthode deUserController
en utilisant Lumen 5.6. J'espère que cela aiderait quelqu'un.
la source
Solution :
la source
Vous pouvez utiliser le code ci-dessous pour obtenir le nom de l'itinéraire dans le fichier lame
la source