Laravel:如何获取当前路线名称? (v5和v6)

问题描述 投票:196回答:21

在Laravel v4中,我能够使用...获得当前的路线名称

Route::currentRouteName()

我如何在Laravel v5Laravel v6中做到这一点?

php laravel laravel-5 laravel-routing laravel-6
21个回答
381
投票

尝试此

Route::getCurrentRoute()->getPath();

\Request::route()->getName()

来自v5。+

use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();

Laravel 5.3

Route::currentRouteName(); //use Illuminate\Support\Facades\Route;

或者如果您需要动作名称

Route::getCurrentRoute()->getActionName();

您可以在Laravel API中找到有关laravel路线的所有信息:http://laravel.com/api/5.0/Illuminate/Routing/Router.htmlhttp://laravel.com/api/5.0/Illuminate/Routing.html

检索请求URI

path方法返回请求的URI。因此,如果传入请求的目标是http://example.com/foo/bar,则path方法将返回foo/bar

$uri = $request->path();

is方法使您可以验证传入的请求URI与给定的模式匹配。使用此方法时,可以将*字符用作通配符:

if ($request->is('admin/*')) {
    //
}

要获取完整的URL,而不仅仅是路径信息,可以在请求实例上使用url方法:

$url = $request->url();

对于Laravel 5.2和5.3

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

Laravel 5.3 route documentation

Laravel 5.2 route documentation

有使用请求获取路线的选项

$request->route()->getName();

4
投票

在控制器操作中,您可以执行以下操作:


4
投票

现在在Laravel 5.3中,我看到可以通过您尝试的类似方式进行:


3
投票

[Request::path();更好,请记住Use Request;


3
投票

访问当前路由(v5.3及更高版本)


1
投票

我曾在larvel 5.3中使用过获取路线名称


1
投票

查看\Illuminate\Routing\Router.php,可以通过在控制器方法中插入路由器来使用方法currentRouteNamed()。例如:


1
投票

访问当前路线



0
投票

在帮助文件中,


0
投票

由于某些原因,我无法使用任何这些解决方案。所以我只是将Route::currentRouteName()中的路由声明为web.php,在我的控制器中,我使用$router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])获得了路由的名称,其中$routeName = $request->route()[1]['as'];$request]中\Illuminate\Http\Request $request方法中的index typehinted参数。

使用流明5.6。希望对别人有帮助。


35
投票

使用Laravel 5.1,您可以使用

\Request::route()->getName()

0
投票

解决方案:

UserController

0
投票

我认为最简单的解决方案是使用此帮助程序:

$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;

23
投票

找到了一种找到当前路线名称的方法,适用于laravel v5v5.1.28v5.2.10

命名空间

use Illuminate\Support\Facades\Route;

$currentPath= Route::getFacadeRoot()->current()->uri();

对于Laravel laravel v5.3,您可以使用:

use Illuminate\Support\Facades\Route;

Route::currentRouteName();

22
投票

如果您需要URL,而不是路由名称,则无需使用/不需要其他任何类:

url()->current();

19
投票

如果您想在多条路线上选择菜单,您可以这样做:

<li class="{{ (Request::is('products/*') || Request::is('products') || Request::is('product/*') ? 'active' : '') }}"><a href="{{url('products')}}"><i class="fa fa-code-fork"></i>&nbsp; Products</a></li>

或者如果您只想选择一个菜单,您可以像这样简单地做:

<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i>&nbsp; Users</a></li>

也在Laravel 5.2]中进行了测试]

希望此帮助某人。


12
投票

Laravel 5.2可以使用


9
投票

在5.2中,您可以将请求直接用于:


6
投票

最短的方法是路线立面\Route::current()->getName()


5
投票

您可以在模板中使用:

© www.soinside.com 2019 - 2024. All rights reserved.