Как получить текущее название маршрута в laravel 5?

Я пытаюсь получить текущее название маршрута, используя Laravel 5.

В laravel 4 я смог сделать это с помощью Route :: currentRouteName () .

Как я могу сделать это в laravel 5?

благодаря

Попробуй это

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

или

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

от v5. +

 use Illuminate\Support\Facades\Route; $currentPath= Route::getFacadeRoot()->current()->uri(); 

Laravel 5.3

 Route::currentRouteName(); 

Или, если вам нужно имя действия

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

Вы можете найти все о маршрутах laravel в API Laravel: http://laravel.com/api/5.0/Illuminate/Routing/Router.html http://laravel.com/api/5.0/Illuminate/Routing.html

Получение запроса URI

Метод path возвращает URI запроса. Итак, если входящий запрос нацелен на http://example.com/foo/bar , метод path вернет foo/bar :

 $uri = $request->path(); 

Метод is позволяет проверить, соответствует ли URI входящего запроса заданному шаблону. Вы можете использовать символ * в качестве подстановочного знака при использовании этого метода:

 if ($request->is('admin/*')) { // } 

Чтобы получить полный URL-адрес, а не только информацию о пути, вы можете использовать метод url для экземпляра запроса:

 $url = $request->url(); 

Используя Laravel 5.1, вы можете использовать

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

Найден способ поиска текущего названия маршрута для laravel v5 , v5.1.28 и v5.2.10

Пространство имен

 use Illuminate\Support\Facades\Route; 

а также

 $currentPath= Route::getFacadeRoot()->current()->uri(); 

Для Laravel laravel v5.3 вы можете просто использовать:

 use Illuminate\Support\Facades\Route; Route::currentRouteName(); 

Если вам нужен URL-адрес , а не имя маршрута , вам не нужно использовать / требовать какие-либо другие классы:

 url()->current(); 

Если вы хотите выбрать выбранное меню на нескольких маршрутах, вы можете сделать следующее:

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

Или, если вы хотите выбрать только одно меню, вы можете просто сделать следующее:

 <li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i>&nbsp; Users</a></li> 

Также тестируется в Laravel 5.2

Надеюсь, это поможет кому-то.

Laravel 5.2 Вы можете использовать

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

Он даст вам текущее название маршрута.

Вы можете использовать в шаблоне:

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

Самый короткий путь – это Route facade \Route::current()->getName()

Теперь в Laravel 5.3 я вижу, что можно сделать так, как вы пытались:

 $route = Route::current(); $name = Route::currentRouteName(); $action = Route::currentRouteAction(); 

https://laravel.com/docs/5.3/routing#accessing-the-current-route

В действии контроллера вы можете просто сделать:

 public function someAction(Request $request) { $routeName = $request->route()->getName(); } 

$request здесь разрешен сервисом Laravel.

getName() возвращает имя маршрута только для именованных маршрутов , но в противном случае (но вы все равно можете изучить объект \Illuminate\Routing\Route для чего-то интересного).

Другими словами, вы должны определить свой маршрут таким образом, чтобы вернуть «nameOfMyRoute»:

 Route::get('my/some-action', [ 'as' => 'nameOfMyRoute', 'uses' => 'MyController@someAction' ]); 

Request::path(); лучше, и не забудьте Use Request;

В 5.2 вы можете напрямую использовать запрос:

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

или через вспомогательный метод:

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

Пример вывода:

 "home.index" 

Я использовал для получения названия маршрута в larvel 5.3

Request::path()

В файле помощника,

Для получения текущего URL-адреса можно использовать Route::current()->uri() .

Следовательно, если вы сравниваете свое имя маршрута, чтобы установить активный класс в меню, тогда было бы хорошо, если бы вы использовали

Route::currentRouteName() чтобы получить имя маршрута и сравнить

Глядя на \Illuminate\Routing\Router.php вы можете использовать метод currentRouteNamed() , введя Router в свой метод контроллера. Например:

 use Illuminate\Routing\Router; public function index(Request $request, Router $router) { return view($router->currentRouteNamed('foo') ? 'view1' : 'view2'); } 

или с использованием фасада маршрута:

 public function index(Request $request) { return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2'); } 

Вы также можете использовать метод is() чтобы проверить, назначен ли маршрут любому из заданных параметров, но будьте осторожны, этот метод использует preg_match() и я испытал его, чтобы вызвать странное поведение с точными именами маршрутов (например 'foo.bar.done' ). Существует также вопрос о производительности вокруг preg_match() который является большой темой в сообществе PHP.

 public function index(Request $request) { return view(\Route::is('foo', 'bar') ? 'view1' : 'view2'); }