Dans Laravel 4, j'ai pu obtenir le nom de la route actuelle en utilisant ...
Route::currentRouteName()
Comment puis-je le faire dans Laravel 5?
Essaye ça
Route::getCurrentRoute()->getPath();
ou
\Request::route()->getName()
à partir de v5. +
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel 5.3
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
Ou si vous avez besoin du nom de l'action
Route::getCurrentRoute()->getActionName();
Vous pouvez trouver tout ce qui concerne les routes laravel dans l'API Laravel: http://laravel.com/api/5.0/Illuminate/Routing/Router.htmlhttp://laravel.com /api/5.0/Illuminate/Routing.html
Récupération de l'URI de la demande
La méthode path renvoie l'URI de la demande. Ainsi, si la demande entrante est ciblée sur http://example.com/foo/bar
, la méthode du chemin d'accès renverra foo/bar
:
$uri = $request->path();
La méthode is
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 en utilisant 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 la requête:
$url = $request->url();
En utilisant Laravel 5.1, vous pouvez utiliser
\Request::route()->getName()
Trouver un moyen de trouver le nom actuel de la route 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 de url , pas nom de la route , vous n'avez pas besoin d'utiliser/d'exiger d'autres classes:
url()->current();
Si vous souhaitez sélectionner un menu sur plusieurs itinéraires, procédez comme suit:
<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 la route actuelle.
Le chemin le plus court est la façade Route \Route::current()->getName()
Cela fonctionne également dans laravel 5.4. *
En 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"
Vous pouvez utiliser dans le modèle:
<?php $path = Route::getCurrentRoute()->getPath(); ?>
<?php if (starts_with($path, 'admin/')) echo "active"; ?>
Maintenant, à Laravel, 5.3
, je vois que vous pouvez faire de même:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
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 routes nommées seulement, null
sinon (mais vous pouvez toujours explorer l'objet \Illuminate\Routing\Route
pour autre chose d'intérêt).
En d'autres termes, votre route devrait être définie comme suit pour que "nameOfMyRoute" soit renvoyé:
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => 'MyController@someAction'
]);
Request::path();
est mieux, et n'oubliez pas de Use Request;
Accès à la route actuelle (à partir de la v5.3)
Vous pouvez utiliser les méthodes actuelle, currentRouteName et currentRouteAction sur la façade Route pour accéder aux informations relatives à l'itinéraire traitant 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 afin d'examiner toutes les méthodes accessibles.
Référence: https://laravel.com/docs/5.2/routing#accessing-the-current-route
Accéder à l'itinéraire actuel
Obtenir le nom de l'itinéraire actuel dans les modèles de lames
{{Route :: currentRouteName ()}} pour obtenir le nom de la route
pour plus d'informations https://laravel.com/docs/5.5/routing#accessing-the-current-route
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 de la 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 avec l'un des paramètres donnés, mais méfiez-vous, cette méthode utilise preg_match()
et je l'ai expérimentée comme provoquant un comportement étrange avec les noms de route en pointillés (comme 'foo.bar.done'
). Il y a aussi la question de la performance autour de preg_match()
qui est un sujet important dans la communauté PHP.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
À mon avis, la solution la plus simple consiste à utiliser cet assistant:
request()->route()->getName()
Pour la documentation, voir ce lien
pour certaines raisons, je ne pouvais utiliser aucune de ces solutions. donc je viens de déclarer ma route dans web.php
comme $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
et dans mon contrôleur, j'ai reçu le nom de la route utilisant $routeName = $request->route()[1]['as'];
qui $request
est \Illuminate\Http\Request $request
paramètre typehinted dans la méthode index
de UserController
en utilisant Lumen 5.6. J'espère que ça aiderait quelqu'un.
Dans un fichier Helper,
Vous pouvez utiliser Route::current()->uri()
pour obtenir l'URL actuelle.
Par conséquent, si vous comparez le nom de votre route pour définir la classe active dans le menu, il serait bon que
Route::currentRouteName()
pour obtenir le nom de la route et comparer
$request->route()->getName();
Solution :
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;