В Laravel v4 мне удалось получить текущее название маршрута, используя ...
Route::currentRouteName()
Как я могу сделать это в Laravel v5 и Laravel v6 ?
В Laravel v4 мне удалось получить текущее название маршрута, используя ...
Route::currentRouteName()
Как я могу сделать это в Laravel v5 и Laravel v6 ?
Ответы:
Попробуй это
Route::getCurrentRoute()->getPath();
или
\Request::route()->getName()
от v5.1
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel v5.2
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
Или если вам нужно название действия
Route::getCurrentRoute()->getActionName();
Маршрутная документация Laravel 5.2
Получение 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 v5.3 ... v5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Маршрутная документация Laravel 5.3
Laravel v6.x ... 7.x
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
** По состоянию на 11 ноября 2019 года - версия 6.5 **
Маршрутная документация Laravel 6.x
Существует возможность использовать запрос для получения маршрута
$request->route()->getName();
api/...
Route::currentRouteName();
идеально :)
$request::route()->getName()
если вы уже используете запрос $, или вы можете использовать глобальный помощник request()::route()->getName()
.
request()->route()->getName()
это путь.
request()
вспомогательной функции особенно полезно в представлениях. request()->route()->getName()
это лучший вариант.
Используя Laravel 5.1, вы можете использовать
\Request::route()->getName()
{{ route(\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> Products</a></li>
Или, если вы хотите выбрать только одно меню, вы можете просто сделать так:
<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i> Users</a></li>
Также проверено в Laravel 5.2
Надеюсь, это поможет кому-то.
Laravel 5.2 Вы можете использовать
$request->route()->getName()
Это даст вам текущее название маршрута.
name()
метод будет добавлять или изменять имя, в то время как getName()
метод возвращает его.
В 5.2 вы можете использовать запрос напрямую с:
$request->route()->getName();
или с помощью вспомогательного метода:
request()->route()->getName();
Пример вывода:
"home.index"
Кратчайший путь - это Фасадный маршрут
\Route::current()->getName()
Это также работает в Laravel 5.4. *
В действии контроллера вы можете просто сделать:
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'
]);
Теперь в Laravel 5.3
я вижу, что можно сделать так же, как вы пытались:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
Доступ к текущему маршруту
Получить текущее название маршрута в шаблонах Blade
{{ Route::currentRouteName() }}
для получения дополнительной информации https://laravel.com/docs/5.5/routing#accessing-the-current-route
Доступ к текущему маршруту (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
$request->route()->getName();
Я использовал для получения названия маршрута в 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');
}
или используя фасад 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');
}
На мой взгляд, самым простым решением является использование этого помощника:
request()->route()->getName()
Для документов, смотрите эту ссылку
Вы можете использовать ниже метод:
Route::getCurrentRoute()->getPath();
В версии Laravel> 6.0, Вы можете использовать следующие методы:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Доступ к текущему имени маршрута в контроллере
т. е. http: // localhost / project_name / edit
$ Request-> Сегмент (1); //редактировать
(или)
$ request-> URL (); // http: // localhost / project_name / edit
В файле Helper,
Вы можете использовать, Route::current()->uri()
чтобы получить текущий URL.
Следовательно, если вы сравните название вашего маршрута, чтобы установить активный класс в меню, было бы хорошо, если вы используете
Route::currentRouteName()
узнать название маршрута и сравнить
по некоторым причинам я не мог использовать ни одно из этих решений. так что я просто объявил мой маршрут , 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
используя Lumen 5.6. Надеюсь, это кому-нибудь поможет.
Решение :
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
Вы можете использовать приведенный ниже код, чтобы получить имя маршрута в блейд-файле
request()->route()->uri