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


в laravel 4 я смог получить текущее название маршрута с помощью

Route::currentRouteName().

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

18 135

18 ответов:

попробуй такое

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 Routes в Laravel API: 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();

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

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

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

$url = $request->url();

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

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

нашел способ найти текущее название маршрута работает для laravel v5,У5.1.28 и У5.2.10

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

use Illuminate\Support\Facades\Route;

и

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

для Laravel laravel У5.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()

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

самый короткий путь-это фасад маршрута \Route::current()->getName()

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

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

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

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

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

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

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

в 5.2, вы можете использовать запрос непосредственно с:

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

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

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

выход пример:

"home.index"

в действиях контроллера, вы могли бы просто сделать:

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' => 'MyController@someAction'
]);

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

Request::path()

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

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

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

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

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

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

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

в вспомогательном файле,

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

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

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

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

получить текущее имя маршрута в шаблонах Блейда

{{ Route:: currentRouteName ()}} чтобы получить имя route

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

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

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