У 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 запиту
Метод шляху повертає 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 і далі)
Ви можете використовувати поточний, currentRouteName та currentRouteAction методи на фасаді маршруту для доступу до інформації про маршрут, що обробляє вхідний запит:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Зверніться до документації API як для базового класу фасаду маршруту, так і для екземпляра 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');
}
або використовуючи фасад маршруту:
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 / ім'я_проекту / редагувати
$ request-> сегмент (1); // редагувати
(або)
$ request-> url (); // http: // localhost / ім'я проекту / редагувати
У файлі 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
використовуючи Люмен 5.6. Сподіваюся, це комусь допоможе.
Рішення:
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
Ви можете використовувати наступний код, щоб отримати назву маршруту у файлі леза
request()->route()->uri