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?

135
demandé sur shuvrow 2015-05-05 10:27:49

18 réponses

Essayez ceci

Route::getCurrentRoute()->getPath();

Ou

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

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 sur les Routes laravel dans L'API Laravel: http://laravel.com/api/5.0/Illuminate/Routing/Router.html http://laravel.com/api/5.0/Illuminate/Routing.html

Récupération de L'URI de la requête

La méthode path renvoie L'URI de la requête. Donc, si la requête entrante est ciblée sur http://example.com/foo/bar, la méthode path retournera foo/bar:

$uri = $request->path();

La méthode is vous permet de vérifier que L'URI de la requête 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 requête:

$url = $request->url();
276
répondu Adnan 2018-01-12 08:57:12

En utilisant Laravel 5.1, vous pouvez utiliser

\Request::route()->getName()
28
répondu loranger 2015-10-08 07:40:17

Trouvé un moyen de trouver l'itinéraire actuel nom 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();
21
répondu shuvrow 2016-10-03 06:28:00

Si vous avez besoin d' url, pas nom de l'itinéraire, vous n'avez pas besoin d'utiliser/d'exiger que toute les autres classes:

url()->current();
16
répondu Fusion 2016-03-29 17:37:34

Si vous voulez sélectionner le menu sur plusieurs routes, vous pouvez faire comme ceci:

<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 souhaitez 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.

13
répondu Webistan 2018-05-29 06:24:44

Laravel 5.2 Vous pouvez utiliser

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

Il vous donnera le nom de l'itinéraire actuel.

6
répondu Jalvin Vohra 2016-11-01 01:49:46

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

Cela fonctionne également dans laravel 5.4.*

6
répondu WhipsterCZ 2018-02-13 17:52:36

Vous pouvez utiliser dans le modèle:

<?php $path = Route::getCurrentRoute()->getPath(); ?>
<?php if (starts_with($path, 'admin/')) echo "active"; ?>
5
répondu JS Lee 2015-10-28 07:15:07

Maintenant, dans 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

4
répondu itsazzad 2016-10-03 03:15:43

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

3
répondu worldask 2016-02-24 06:44:57

En 5.2, vous pouvez utiliser la requête directement avec:

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

Ou via la méthode helper:

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

Exemple de Sortie:

"home.index"
3
répondu Jonathan 2016-07-04 15:50:33

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() retourne le nom de l'itinéraire pour routes nommées seulement, null sinon (mais vous pouvez toujours explorer les \Illuminate\Routing\Route objet pour quelque chose d'intérêt).

En d'autres termes, vous devriez avoir votre route définie comme ceci pour avoir" nameOfMyRoute " retourné:

Route::get('my/some-action', [
    'as' => 'nameOfMyRoute',
    'uses' => 'MyController@someAction'
]);
2
répondu Bogdan Ghervan 2015-08-30 23:28:34

J'ai utilisé pour obtenir le nom de la route dans larvel 5.3

Request::path()

1
répondu Dipak Kolhe 2017-07-12 11:21:02

Regardant \Illuminate\Routing\Router.php, vous pouvez utiliser la méthode currentRouteNamed() par l'injection d'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 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 attention cette méthode utilise preg_match() et je l'ai expérimenté pour provoquer un comportement étrange avec des noms de route pointillés (comme 'foo.bar.done'). Il y a aussi la question de la performance autour de preg_match() ce qui est un gros sujet dans le PHP communauté.

public function index(Request $request) {
    return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
1
répondu Ken 2017-10-24 08:21:17

Accès à la Route actuelle (V5. 3 et suivantes)

Vous pouvez utiliser les méthodes current, currentRouteName et currentRouteAction sur la façade Route pour accéder aux informations sur la route traitant la requête 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 de Route et l'instance de Route pour examiner toutes les méthodes accessibles.

Référence : https://laravel.com/docs/5.2/routing#accessing-the-current-route

1
répondu FullStack 2018-08-25 12:55:37

Dans un fichier D'aide,

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 d'utiliser

Route::currentRouteName() pour obtenir le nom de l'itinéraire et comparer

0
répondu ankit patel 2017-05-25 04:45:52

Accès À La Route Actuelle

Récupère le nom d'itinéraire actuel dans les modèles de lame

{{ Route::currentRouteName() }} pour obtenir le nom de la route

Pour plus d'informations https://laravel.com/docs/5.5/routing#accessing-the-current-route

0
répondu yogesh chatrola 2018-09-13 12:29:42

Pour certaines raisons, je ne pouvais utiliser aucune de ces solutions. donc j'ai juste a déclaré ma route dans web.php comme $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index']) et dans mon contrôleur, j'ai obtenu le nom de la route à l'aide de $routeName = $request->route()[1]['as']; qui $request est \Illuminate\Http\Request $request typehinted paramètre index méthode de UserController

Utilisation De Lumen 5.6. L'espoir que cela aiderait quelqu'un.

0
répondu MajidJafari 2018-09-18 08:37:24