web-dev-qa-db-fra.com

Comment obtenir le nom de l'itinéraire actuel?

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();
315
Adnan

En utilisant Laravel 5.1, vous pouvez utiliser

\Request::route()->getName()
31
loranger

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();
19
Fusion

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>&nbsp; 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>&nbsp; Users</a></li>

Également testé dans Laravel 5.2

J'espère que cela aidera quelqu'un.

14
Webistan

Laravel 5.2 Vous pouvez utiliser

$request->route()->getName()

Il vous donnera le nom de la route actuelle.

9
Jalvin Vohra

Le chemin le plus court est la façade Route \Route::current()->getName()

Cela fonctionne également dans laravel 5.4. *

6
WhipsterCZ

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"
6
Jonathan

Vous pouvez utiliser dans le modèle:

<?php $path = Route::getCurrentRoute()->getPath(); ?>
<?php if (starts_with($path, 'admin/')) echo "active"; ?>
5
JS Lee

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

4
itsazzad

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'
]);
3
Bogdan Ghervan

Request::path(); est mieux, et n'oubliez pas de Use Request;

3
worldask

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

2
Amitesh

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

1
yogesh chatrola

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');
}
1
Ken

À mon avis, la solution la plus simple consiste à utiliser cet assistant:

request()->route()->getName()

Pour la documentation, voir ce lien

0
DenBrown

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.

0
MajidJafari

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

0
ankit patel
$request->route()->getName();
0
panqingqiang

Solution :

 $routeArray = app('request')->route()->getAction();
    $controllerAction = class_basename($routeArray['controller']);
    list($controller, $route) = explode('@', $controllerAction);
    echo $route;
0
Kundan roy