在Laravel v4中,我可以使用…
Route::currentRouteName()
我如何在Laravel v5和Laravel v6中做到这一点?
在Laravel v4中,我可以使用…
Route::currentRouteName()
我如何在Laravel v5和Laravel v6中做到这一点?
当前回答
由于某些原因,我不能使用这些解决方案。所以我刚刚在web.php中声明了我的路由$router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index']),在我的控制器中,我得到了路由的名称使用$routeName = $request->route()[1]['as'];在UserController的索引方法中,哪个$request是\Illuminate\Http\ request $request类型暗示参数
使用Lumen 5.6。希望它能帮助到一些人。
其他回答
查看\Illuminate\Routing\Router.php,您可以通过在控制器方法中注入路由器来使用方法currentRouteNamed()。例如:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
或者使用Route facade:
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');
}
找到了一种查找当前路由名称的方法,适用于laravel v5, v5.1.28和v5.2.10
名称空间
use Illuminate\Support\Facades\Route;
and
$currentPath= Route::getFacadeRoot()->current()->uri();
对于Laravel Laravel v5.3,你可以使用:
use Illuminate\Support\Facades\Route;
Route::currentRouteName();
在Helper文件中,
您可以使用Route::current()->uri()来获取当前URL。
因此,如果你比较你的路由名在菜单上设置活动类,那么如果你使用
Route::currentRouteName()获取路由名并进行比较
$request->route()->getName();
您要做的第一件事是在类的顶部导入命名空间。
use Illuminate\Support\Facades\Route;
拉拉维尔V8
$route = Route::current(); // Illuminate\Routing\Route
$name = Route::currentRouteName(); // RouteName
$action = Route::currentRouteAction(); // Action
Laravel v7、6和5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();