какое пространство имен я должен использовать, чтобы найти имя маршрута? Я использовал Illuminate \ Support \ Facades \ Route, но результат равен нулю.
Md Rashedul Hoque Bhuiyan
Это правильный класс. Вероятно, вашему маршруту не присвоено имя. Обратите внимание, что имя маршрута и URI не совпадают.
Метод path возвращает URI запроса. Итак, если на входящий запрос нацелен http://example.com/foo/bar, метод пути вернет foo/bar:
$uri = $request->path();
isМетод позволяет проверить , что входящий запрос URI соответствует заданному шаблону. Вы можете использовать *символ в качестве подстановочного знака при использовании этого метода:
if($request->is('admin/*')){//}
Чтобы получить полный URL, а не только информацию о пути, вы можете использовать метод url в экземпляре запроса:
У вас есть идея, как это отфильтровать, например, если нужно только печатать в представлении API-маршрутыapi/...
utdev
6
Route::currentRouteName();идеально :)
EM-Creations
$request::route()->getName()если вы уже используете запрос $, или вы можете использовать глобальный помощник request()::route()->getName().
Дэниел Дьюхерст
@Daniel Dewhurst: Может быть, это работает на v <5.7, но с v5.7 вы не должны использовать его статически, вместо этого request()->route()->getName()это путь.
1
5
Использование request()вспомогательной функции особенно полезно в представлениях. request()->route()->getName()это лучший вариант.
Это возвращает ошибку: «Вызов функции-члена current () для необъекта». url () возвращает строку, а не объект, поэтому я не думаю, что это могло бы сработать. Возможно, вы думали о каком-то другом методе или объекте вместо url ()?
$request здесь разрешается сервисным контейнером Laravel.
getName()в противном случае возвращает имя маршрута только для именованных маршрутовnull (но вы все равно можете исследовать \Illuminate\Routing\Routeобъект для чего-то еще интересного).
Другими словами, ваш маршрут должен быть определен так, чтобы возвращалось nameOfMyRoute:
Спасибо за правильный ответ, потерял 30 минут, пытаясь бесполезные предложения.
Крахер
3
Доступ к текущему маршруту (v5.3 и далее)
Вы можете использовать методы current, currentRouteName и currentRouteAction на фасаде Route для доступа к информации о маршруте, обрабатывающем входящий запрос:
Глядя на это, \Illuminate\Routing\Router.phpвы можете использовать метод currentRouteNamed(), введя Маршрутизатор в метод вашего контроллера. Например:
Вы также можете использовать метод, is()чтобы проверить, назван ли маршрут какому-либо из заданных параметров, но будьте осторожны, этот метод использует, preg_match()и я испытал его, чтобы вызвать странное поведение с точечными именами маршрута (например 'foo.bar.done'). Существует также вопрос производительности, preg_match()
который является важной темой в сообществе PHP.
по некоторым причинам я не мог использовать ни одно из этих решений. так что я просто объявил мой маршрут , web.phpкак $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])и в моем контроллере я получил название маршрута , с помощью $routeName = $request->route()[1]['as'];которой $requestявляется \Illuminate\Http\Request $requesttypehinted параметраindex методеUserController
используя Lumen 5.6. Надеюсь, это кому-нибудь поможет.
Ответы:
Попробуй это
или
от v5.1
Laravel v5.2
Или если вам нужно название действия
Маршрутная документация Laravel 5.2
Получение URI запроса
Метод path возвращает URI запроса. Итак, если на входящий запрос нацелен
http://example.com/foo/bar
, метод пути вернетfoo/bar
:is
Метод позволяет проверить , что входящий запрос URI соответствует заданному шаблону. Вы можете использовать*
символ в качестве подстановочного знака при использовании этого метода:Чтобы получить полный URL, а не только информацию о пути, вы можете использовать метод url в экземпляре запроса:
Laravel v5.3 ... v5.8
Маршрутная документация Laravel 5.3
Laravel v6.x ... 7.x
** По состоянию на 11 ноября 2019 года - версия 6.5 **
Маршрутная документация Laravel 6.x
Существует возможность использовать запрос для получения маршрута
источник
api/...
Route::currentRouteName();
идеально :)$request::route()->getName()
если вы уже используете запрос $, или вы можете использовать глобальный помощникrequest()::route()->getName()
.request()->route()->getName()
это путь.request()
вспомогательной функции особенно полезно в представлениях.request()->route()->getName()
это лучший вариант.Используя Laravel 5.1, вы можете использовать
источник
{{ route(\Request::route()->getName()) }}
. Спасибо!Нашел способ найти текущее название маршрута работ для laravel v5 , v5.1.28 и v5.2.10
Пространство имен
и
Для Laravel Laravel v5.3 вы можете просто использовать:
источник
Если вам нужен URL , а не имя маршрута , вам не нужно использовать / требовать какие-либо другие классы:
источник
Если вы хотите выбрать меню на нескольких маршрутах, вы можете сделать так:
Или, если вы хотите выбрать только одно меню, вы можете просто сделать так:
Также проверено в Laravel 5.2
Надеюсь, это поможет кому-то.
источник
Laravel 5.2 Вы можете использовать
Это даст вам текущее название маршрута.
источник
name()
метод будет добавлять или изменять имя, в то время какgetName()
метод возвращает его.В 5.2 вы можете использовать запрос напрямую с:
или с помощью вспомогательного метода:
Пример вывода:
источник
Кратчайший путь - это Фасадный маршрут
\Route::current()->getName()
Это также работает в Laravel 5.4. *
источник
В действии контроллера вы можете просто сделать:
$request
здесь разрешается сервисным контейнером Laravel.getName()
в противном случае возвращает имя маршрута только для именованных маршрутовnull
(но вы все равно можете исследовать\Illuminate\Routing\Route
объект для чего-то еще интересного).Другими словами, ваш маршрут должен быть определен так, чтобы возвращалось nameOfMyRoute:
источник
Вы можете использовать в шаблоне:
источник
Теперь в Laravel
5.3
я вижу, что можно сделать так же, как вы пытались:https://laravel.com/docs/5.3/routing#accessing-the-current-route
источник
Доступ к текущему маршруту
Получить текущее название маршрута в шаблонах Blade
для получения дополнительной информации https://laravel.com/docs/5.5/routing#accessing-the-current-route
источник
Доступ к текущему маршруту (v5.3 и далее)
Вы можете использовать методы current, currentRouteName и currentRouteAction на фасаде Route для доступа к информации о маршруте, обрабатывающем входящий запрос:
Обратитесь к документации API для базового класса фасада Route и экземпляра Route, чтобы просмотреть все доступные методы.
Ссылка: https://laravel.com/docs/5.2/routing#accessing-the-current-route
источник
Request::path();
лучше, и не забудьтеuse Request;
источник
источник
Я использовал для получения названия маршрута в Larvel 5.3
Request::path()
источник
Глядя на это,
\Illuminate\Routing\Router.php
вы можете использовать методcurrentRouteNamed()
, введя Маршрутизатор в метод вашего контроллера. Например:или используя фасад Route:
Вы также можете использовать метод,
is()
чтобы проверить, назван ли маршрут какому-либо из заданных параметров, но будьте осторожны, этот метод использует,preg_match()
и я испытал его, чтобы вызвать странное поведение с точечными именами маршрута (например'foo.bar.done'
). Существует также вопрос производительности,preg_match()
который является важной темой в сообществе PHP.источник
На мой взгляд, самым простым решением является использование этого помощника:
Для документов, смотрите эту ссылку
источник
Вы можете использовать ниже метод:
В версии Laravel> 6.0, Вы можете использовать следующие методы:
источник
Доступ к текущему имени маршрута в контроллере
т. е. 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. Надеюсь, это кому-нибудь поможет.
источник
Решение :
источник
Вы можете использовать приведенный ниже код, чтобы получить имя маршрута в блейд-файле
источник