如何在laravel 5中获取当前的路由名称?

我正在尝试使用Laravel 5获取当前的路由名称。

在laravel 4中,我可以使用Route :: currentRouteName()来完成它。

我怎么能在laravel 5中做到这一点?

谢谢

试试这个

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

要么

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

从v5。+

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

Laravel 5.3

 Route::currentRouteName(); 

或者如果你需要动作名称

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

您可以在Laravel API中find关于laravel Routes的所有信息: http ://laravel.com/api/5.0/Illuminate/Routing/Router.html http://laravel.com/api/5.0/Illuminate/Routing.html

检索请求URI

path方法返回请求的URI。 所以,如果传入请求的目标是http://domain.com/foo/bar ,path方法将返回foo/bar

 $uri = $request->path(); 

is方法允许您validation传入的请求URI是否与给定的模式匹配。 使用此方法时,可以使用*字符作为通配符:

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

要获取完整的URL,不仅仅是path信息,您可以在请求实例中使用url方法:

 $url = $request->url(); 

使用Laravel 5.1,你可以使用

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

find一种方法来find当前的路由名称适用于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(); 

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

 url()->current(); 

如果你想在多个路线上select菜单,你可以这样做:

 <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> 

或者,如果你想select只是单一的菜单,你可能只是这样做:

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

还在Laravel 5.2中进行了testing

希望这可以帮助别人。

您可以在模板中使用:

 <?php $path = Route::getCurrentRoute()->getPath(); ?> <?php if (starts_with($path, 'admin/')) echo "active"; ?> 

Laravel 5.2你可以使用

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

它会给你当前的路由名称。

最短path是Route facade \Route::current()->getName()

现在在Laravel 5.3我看到可以按照类似的方式进行尝试:

 $route = Route::current(); $name = Route::currentRouteName(); $action = Route::currentRouteAction(); 

https://laravel.com/docs/5.3/routing#accessing-the-current-route

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

 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' ]); 

Request::path(); 是更好的,并记住Use Request;

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

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

或者通过辅助方法:

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

输出示例:

 "home.index" 

我曾用于获取path名称在5.3中

Request::path()

在一个帮手文件中,

你可以使用Route::current()->uri()来获得当前的URL。

因此,如果你比较你的路由名称来设置菜单上的活动类,那么它会很好,如果你使用

Route::currentRouteName()获取路由的名称并进行比较

\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'); }