it-swarm.com.ru

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

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

Route::currentRouteName()

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

152
Md Rashedul Hoque Bhuiyan

Попробуй это 

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 в Laravel API: http://laravel.com/api/5.0/Illuminate/Routing/Router.htmlhttp://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();
315
Adnan

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

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

Нашел способ найти текущее название маршрута работ для 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();
21
Md Rashedul Hoque Bhuiyan

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

url()->current();
19
Fusion

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

<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

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

14
Webistan

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

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

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

9
Jalvin Vohra

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

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

6
WhipsterCZ

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

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

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

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

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

"home.index"
6
Jonathan

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

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

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

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

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

4
itsazzad

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

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

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

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

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

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

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

3
worldask

Доступ к текущему маршруту (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

2
Amitesh

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

Request::path()

1
Dipak Kolhe

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

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

{{Route :: currentRouteName ()}}, чтобы получить название маршрута 

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

1
yogesh chatrola

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

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

или используя фасад Route:

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

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

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

0
MajidJafari

В файле Helper,

Вы можете использовать Route::current()->uri(), чтобы получить текущий URL.

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

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

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

Решение :

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