Trong Laravel v4 tôi đã có thể lấy tên tuyến đường hiện tại bằng cách sử dụng ...
Route::currentRouteName()
Làm thế nào tôi có thể làm điều đó trong Laravel v5 và Laravel v6 ?
Trong Laravel v4 tôi đã có thể lấy tên tuyến đường hiện tại bằng cách sử dụng ...
Route::currentRouteName()
Làm thế nào tôi có thể làm điều đó trong Laravel v5 và Laravel v6 ?
Câu trả lời:
Thử cái này
Route::getCurrentRoute()->getPath();
hoặc là
\Request::route()->getName()
từ v.1.1
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Ấu trùng v5.2
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
Hoặc nếu bạn cần tên hành động
Route::getCurrentRoute()->getActionName();
Tài liệu lộ trình của Laravel 5.2
Lấy URI yêu cầu
Phương thức đường dẫn trả về URI của yêu cầu. Vì vậy, nếu yêu cầu đến được nhắm mục tiêu http://example.com/foo/bar
, phương thức đường dẫn sẽ trả về foo/bar
:
$uri = $request->path();
Các is
phương pháp cho phép bạn để xác minh rằng yêu cầu đến URI phù hợp với một mẫu nhất định. Bạn có thể sử dụng *
ký tự làm ký tự đại diện khi sử dụng phương pháp này:
if ($request->is('admin/*')) {
//
}
Để có được URL đầy đủ, không chỉ là thông tin đường dẫn, bạn có thể sử dụng phương thức url trong trường hợp yêu cầu:
$url = $request->url();
Ấu trùng v5.3 ... v5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Tài liệu lộ trình của Laravel 5.3
Ấu trùng v6.x ... 7.x
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
** Hiện tại kể từ ngày 11 tháng 11 năm 2019 - phiên bản 6.5 **
Tài liệu lộ trình của Laravel 6.x
Có một tùy chọn để sử dụng yêu cầu để có được tuyến đường
$request->route()->getName();
api/...
Route::currentRouteName();
hoàn hảo :)
$request::route()->getName()
nếu bạn đã sử dụng yêu cầu $ hoặc bạn có thể sử dụng trình trợ giúp toàn cầu request()::route()->getName()
.
request()->route()->getName()
là cách để đi.
request()
chức năng trợ giúp đặc biệt hữu ích trong các khung nhìn. request()->route()->getName()
là lựa chọn tốt nhất.
Sử dụng Laravel 5.1, bạn có thể sử dụng
\Request::route()->getName()
{{ route(\Request::route()->getName()) }}
. Cám ơn rất nhiều!
Tìm thấy một cách để tìm tên tuyến hiện tại hoạt động cho laravel v5 , v5.1.28 và v5.2.10
Không gian tên
use Illuminate\Support\Facades\Route;
và
$currentPath= Route::getFacadeRoot()->current()->uri();
Đối với Laravel laravel v5.3, bạn chỉ có thể sử dụng:
use Illuminate\Support\Facades\Route;
Route::currentRouteName();
Nếu bạn cần url , không phải tên tuyến , bạn không cần sử dụng / yêu cầu bất kỳ lớp nào khác:
url()->current();
Nếu bạn muốn chọn menu trên nhiều tuyến đường, bạn có thể làm như thế này:
<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>
Hoặc nếu bạn muốn chọn chỉ một menu, bạn có thể chỉ cần làm như thế này:
<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i> Users</a></li>
Cũng được thử nghiệm trong Laravel 5.2
Hy vọng điều này sẽ giúp ai đó.
Laravel 5.2 Bạn có thể sử dụng
$request->route()->getName()
Nó sẽ cung cấp cho bạn tên tuyến đường hiện tại.
name()
phương pháp sẽ thêm hoặc thay đổi tên, trong khi getName()
phương thức trả về nó.
Trong 5.2, bạn có thể sử dụng yêu cầu trực tiếp với:
$request->route()->getName();
hoặc thông qua phương thức trợ giúp:
request()->route()->getName();
Ví dụ đầu ra:
"home.index"
Con đường ngắn nhất là mặt tiền đường
\Route::current()->getName()
Điều này cũng hoạt động trong laravel 5.4. *
Trong một hành động điều khiển, bạn chỉ có thể làm:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$request
ở đây được giải quyết bằng container dịch vụ của Laravel.
getName()
chỉ trả về tên tuyến đường cho các tuyến được đặt tên , null
nếu không (nhưng bạn vẫn có thể khám phá \Illuminate\Routing\Route
đối tượng cho mục đích khác).
Nói cách khác, bạn nên xác định tuyến đường của mình như thế này để trả lại "nameOfMyRoute":
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => 'MyController@someAction'
]);
Bây giờ ở Laravel 5.3
tôi đang thấy điều đó có thể được thực hiện tương tự như bạn đã thử:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-civerse-route
Truy cập Tuyến đường hiện tại
Nhận tên tuyến đường hiện tại trong các mẫu Blade
{{ Route::currentRouteName() }}
để biết thêm thông tin https://laravel.com/docs/5.5/routing#accessing-the-civerse-route
Truy cập Tuyến đường hiện tại (v5.3 trở đi)
Bạn có thể sử dụng các phương thức hiện tại, currentRouteName và currentRouteAction trên mặt tiền Tuyến đường để truy cập thông tin về tuyến đường xử lý yêu cầu đến:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Tham khảo tài liệu API cho cả lớp bên dưới của mặt tiền Tuyến đường và đối tượng Tuyến đường để xem xét tất cả các phương thức có thể truy cập.
Tham khảo: https://laravel.com/docs/5.2/routing#accessing-the-civerse-route
$request->route()->getName();
Tôi đã sử dụng để có được tên tuyến đường trong larvel 5.3
Request::path()
Nhìn vào \Illuminate\Routing\Router.php
bạn có thể sử dụng phương pháp currentRouteNamed()
bằng cách tiêm Bộ định tuyến vào phương thức điều khiển của bạn. Ví dụ:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
hoặc sử dụng mặt tiền Tuyến đường:
public function index(Request $request) {
return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2');
}
Bạn cũng có thể sử dụng phương pháp is()
để kiểm tra xem tuyến đường có được đặt tên theo bất kỳ tham số đã cho nào không, nhưng hãy cẩn thận phương pháp này sử dụng preg_match()
và tôi đã trải nghiệm nó để gây ra hành vi lạ với tên tuyến đường rải rác (như 'foo.bar.done'
). Ngoài ra còn có vấn đề về hiệu năng xung quanh preg_match()
đó là một chủ đề lớn trong cộng đồng PHP.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
Theo tôi, giải pháp đơn giản nhất là sử dụng trình trợ giúp này:
request()->route()->getName()
Đối với các tài liệu, xem liên kết này
Bạn có thể sử dụng phương pháp dưới đây:
Route::getCurrentRoute()->getPath();
Trong phiên bản Laravel> 6.0, Bạn có thể sử dụng các phương pháp dưới đây:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Gia nhập tên tuyến hiện tại trong bộ điều khiển
tức là- http: // localhost / project_name / chỉnh sửa
$ request-> phân đoạn (1); //biên tập
(hoặc là)
$ request-> url (); // http: // localhost / project_name / chỉnh sửa
Trong tệp Trợ giúp,
Bạn có thể sử dụng Route::current()->uri()
để có được URL hiện tại.
Do đó, nếu bạn so sánh tên tuyến đường của mình để đặt lớp hoạt động trên menu thì sẽ tốt hơn nếu bạn sử dụng
Route::currentRouteName()
để có được tên của tuyến đường và so sánh
vì một số lý do, tôi không thể sử dụng bất kỳ giải pháp nào trong số này. vì vậy tôi chỉ công bố lộ trình của tôi trong web.php
khi $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
và trong điều khiển của tôi, tôi có tên của tuyến đường sử dụng $routeName = $request->route()[1]['as'];
mà $request
được \Illuminate\Http\Request $request
typehinted tham số trong index
phương phápUserController
sử dụng Lumen 5.6. Hy vọng nó sẽ giúp được ai đó.
Giải pháp :
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
Bạn có thể sử dụng mã dưới đây để lấy tên tuyến đường trong tệp lưỡi cắt
request()->route()->uri