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

В Laravel 4 мне удалось получить имя текущего маршрута, используя...

Route::currentRouteName()

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

Ответ 1

Попробуйте это

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

или

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

из v5. +

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

Laravel 5.3

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

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

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, метод пути вернет foo/bar:

$uri = $request->path();

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

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

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

$url = $request->url();

Для Laravel 5.2 и 5.3

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

Документация по маршруту Laravel 5.3

Маршрутная документация Laravel 5.2

Существует возможность использовать запрос для получения маршрута

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

Ответ 2

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

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

Ответ 3

Найден способ поиска текущего имени маршрута для 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();

Ответ 4

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

url()->current();

Ответ 5

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

<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

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

Ответ 6

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

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

Это даст вам текущее имя маршрута.

Ответ 7

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

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

или с помощью вспомогательного метода:

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

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

"home.index"

Ответ 8

Кратчайший путь - Фасад маршрута \Route::current()->getName()

Это также работает в Laravel 5.4. *

Ответ 9

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

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

Ответ 10

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

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

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

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

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

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

Ответ 12

Request::path(); лучше, и помните Use Request;

Ответ 13

Доступ к текущему маршруту (v5.3 и далее)

Вы можете использовать методы current, currentRouteName и currentRouteAction на фасаде Route для доступа к информации о маршруте, обрабатывающем входящий запрос:

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

Обратитесь к документации API для базового класса фасада Route и экземпляра Route, чтобы просмотреть все доступные методы.

Ссылка: https://laravel.com/docs/5.2/routing#accessing-the-current-route

Ответ 14

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

Request::path()

Ответ 15

Рассматривая \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');
}

Ответ 16

Доступ к текущему маршруту

Получить текущее название маршрута в шаблонах Blade

{{ Route::currentRouteName() }}

для получения дополнительной информации https://laravel.com/docs/5.5/routing#accessing-the-current-route

Ответ 17

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

Ответ 18

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

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

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

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

Ответ 19

по некоторым причинам я не мог использовать ни одно из этих решений. поэтому я просто объявил свой маршрут в web.php как $router->get('/api/v1/users', ['as' => 'index', 'uses' => '[email protected]']) и в мой контроллер Я получил имя маршрута, используя $routeName = $request->route()[1]['as']; какой $request является указанным типом параметра \Illuminate\Http\Request $request в методе index UserController

используя Lumen 5.6. Надеюсь, это кому-нибудь поможет.

Ответ 20

Решение:

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

Ответ 21

На мой взгляд, самым простым решением является использование этого помощника:

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

Документы см. по этой ссылке.

Ответ 22

Я перепробовал все решения, предложенные для Laravel 5.x, но в Laravel 6.x ничего не получалось.
Итак, я использовал это:

Route::current()->uri()