Dans Laravel v4, j'ai pu obtenir le nom de l'itinéraire actuel en utilisant ...
Route::currentRouteName()
Comment puis-je le faire dans Laravel v5 et Laravel v6 ?
Dans Laravel v4, j'ai pu obtenir le nom de l'itinéraire actuel en utilisant ...
Route::currentRouteName()
Comment puis-je le faire dans Laravel v5 et Laravel v6 ?
Réponses:
Essaye ça
Route::getCurrentRoute()->getPath();
ou
\Request::route()->getName()
à partir de la v5.1
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel v5.2
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
Ou si vous avez besoin du nom de l'action
Route::getCurrentRoute()->getActionName();
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 retournera foo/bar
:
$uri = $request->path();
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:
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:
$url = $request->url();
Laravel v5.3 ... v5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Documentation d'itinéraire Laravel 5.3
Laravel v6.x ... 7.x
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
** À 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
$request->route()->getName();
api/...
Route::currentRouteName();
parfait :)
$request::route()->getName()
si vous utilisez déjà la demande $, ou vous pouvez utiliser l'assistant global request()::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
\Request::route()->getName()
{{ 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
use Illuminate\Support\Facades\Route;
et
$currentPath= Route::getFacadeRoot()->current()->uri();
Pour Laravel laravel v5.3, vous pouvez simplement utiliser:
use Illuminate\Support\Facades\Route;
Route::currentRouteName();
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:
url()->current();
Si vous souhaitez sélectionner le menu sur plusieurs itinéraires, vous pouvez faire ceci:
<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>
Ou si vous voulez sélectionner un seul menu, vous pouvez simplement faire comme ceci:
<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i> Users</a></li>
Également testé dans Laravel 5.2
J'espère que cela aidera quelqu'un.
Laravel 5.2 Vous pouvez utiliser
$request->route()->getName()
Il vous donnera le nom de l'itinéraire actuel.
name()
méthode ajoute ou modifie le nom, tandis que la getName()
méthode le renvoie.
Dans 5.2, vous pouvez utiliser la demande directement avec:
$request->route()->getName();
ou via la méthode d'assistance:
request()->route()->getName();
Exemple de sortie:
"home.index"
Le chemin le plus court est la façade de la Route
\Route::current()->getName()
Cela fonctionne également dans laravel 5.4. *
Dans une action de contrôleur, vous pouvez simplement faire:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$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é:
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => 'MyController@someAction'
]);
Maintenant, à Laravel, 5.3
je vois que cela peut être fait de la même manière que vous avez essayé:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
Accéder à l'itinéraire actuel
Obtenir le nom de l'itinéraire actuel dans les modèles de lame
{{ Route::currentRouteName() }}
pour plus d'informations https://laravel.com/docs/5.5/routing#accessing-the-current-route
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:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
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
$request->route()->getName();
J'ai utilisé pour obtenir le nom de l'itinéraire dans larvel 5.3
Request::path()
En regardant, \Illuminate\Routing\Router.php
vous pouvez utiliser la méthode currentRouteNamed()
en injectant un routeur dans votre méthode de contrôleur. Par exemple:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
ou en utilisant la façade Route:
public function index(Request $request) {
return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2');
}
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.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
Vous pouvez utiliser la méthode ci-dessous:
Route::getCurrentRoute()->getPath();
Dans la version Laravel> 6.0, vous pouvez utiliser les méthodes ci-dessous:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
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
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 comparer
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 la index
méthode deUserController
en utilisant Lumen 5.6. J'espère que cela aiderait quelqu'un.
Solution :
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
Vous pouvez utiliser le code ci-dessous pour obtenir le nom de l'itinéraire dans le fichier lame
request()->route()->uri