在Laravel v4中,我可以使用…
Route::currentRouteName()
如何在Laravel v5和Laravel v6中做到这一点?
找到了一种方法来查找当前路由名称的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();
试试这个
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
path方法返回请求的URI。因此,如果传入请求的目标是http://example.com/foo/bar, path方法将返回foo/bar:
http://example.com/foo/bar
foo/bar
$uri = $request->path();
is方法允许你验证传入的请求URI是否匹配给定的模式。在使用此方法时,可以使用*字符作为通配符:
is
*
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
**截至2019年11月11日- 6.5版**
Laravel 6。X路由文档 . X
有一个选项可以使用request来获取路由
$request->route()->getName();
在一个控制器动作中,你可以这样做:
public function someAction(Request $request) { $routeName = $request->route()->getName(); }
这里的$request由Laravel的服务容器解析。
$request
getName()只返回命名的路线的路由名,否则返回null(但你仍然可以探索\Illuminate\Routing\Route对象以获得其他感兴趣的东西)。
getName()
null
\Illuminate\Routing\Route
换句话说,你应该像这样定义你的路由,并返回"nameOfMyRoute":
Route::get('my/some-action', [ 'as' => 'nameOfMyRoute', 'uses' => 'MyController@someAction' ]);
使用Laravel 5.1,您可以使用
你可以在模板中使用:
<?php $path = Route::getCurrentRoute()->getPath(); ?> <?php if (starts_with($path, 'admin/')) echo "active"; ?>
Request::path();更好,记住use Request;
Request::path();
use Request;
如果你需要url,而不是路的名字,你不需要使用/需要任何其他类:
url()->current();
Laravel 5.2可以使用
$request->route()->getName()
它会给你当前的路由名。
如果你想在多条路线上选择菜单,你可以这样做:
<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中测试过
希望这能帮助到一些人。
在5.2中,你可以直接使用请求:
或者通过helper方法:
request()->route()->getName();
输出的例子:
"home.index"
最短路径是Route facade \Route::current()->getName() < / p >
\Route::current()->getName()
这也适用于laravel 5.4.*
现在在Laravel 5.3中,我看到可以做出类似的尝试:
5.3
https://laravel.com/docs/5.3/routing#accessing-the-current-route
在Helper文件中,
你可以使用Route::current()->uri()来获取当前URL。
Route::current()->uri()
因此,如果你比较你的路由名在菜单上设置活动类,那么如果你使用
Route::currentRouteName()获取路由名并进行比较
在larvel 5.3中,我用它来获取路由名
Request::path()
看看\Illuminate\Routing\Router.php,你可以通过在你的控制器方法中注入一个Router来使用方法currentRouteNamed()。例如:
\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'
public function index(Request $request) { return view(\Route::is('foo', 'bar') ? 'view1' : 'view2'); }
访问当前路由(v5.3起)
你可以在Route虚包上使用current, currentRouteName和currentRouteAction方法来访问处理传入请求的路由信息:
参考Route虚包和Route实例的底层类的API文档,查看所有可访问的方法。
参考:https://laravel.com/docs/5.2/routing#accessing-the-current-route
访问当前路由
在Blade模板中获取当前路由名
\{\{ Route::currentRouteName() }}
获取更多信息https://laravel.com/docs/5.5/routing#accessing-the-current-route
由于某些原因,我不能使用这些解决方案。所以我刚刚在web.php中声明我的路由为$router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index']),在我的控制器中,我使用$routeName = $request->route()[1]['as'];获得了路由的名称,其中$request是\Illuminate\Http\Request $request类型暗示参数,在UserController的index方法中
web.php
$router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
$routeName = $request->route()[1]['as'];
\Illuminate\Http\Request $request
UserController
index
使用Lumen 5.6。希望它能帮助到一些人。
解决方案:
$routeArray = app('request')->route()->getAction(); $controllerAction = class_basename($routeArray['controller']); list($controller, $route) = explode('@', $controllerAction); echo $route;
在我看来,最简单的解决方案是使用这个助手:
request()->route()->getName()
关于文档,请参见这个链接
您可以使用以下方法:
在Laravel版本> 6.0中,您可以使用以下方法:
在控制器中访问当前路由名
Ie - http://localhost/your_project_name/edit
$request->segment(1); // edit
(或)
$request->url(); // http://localhost/your_project_name/edit
你可以使用下面的代码在刀片文件中获取路由名称
request()->route()->uri
你可以使用这行代码:url()->current()
url()->current()
在blade文件中:\{\{url()->current()}}
\{\{url()->current()}}
有很多方法可以做到这一点。你可以输入:
\Illuminate\Support\Facades\Request::route()->getName()
获取路由名称。
没有人有答案,如果路由名称或url id需要查看直接 对于视图中的路由名,直接
$routeName = Request::route()->getName();
对于id from url on view
$url_id = Request::segment(2);
你要做的第一件事就是在类的顶部导入名称空间。
laravel v8
$route = Route::current(); // Illuminate\Routing\Route $name = Route::currentRouteName(); // RouteName $action = Route::currentRouteAction(); // Action
Laravel v7、6和5.8
\Request::path()
我用这个来获取当前uri
使用幼虫助手和魔法方法
在laravel 7或8使用辅助功能
Get Current Route Name
要检查路由是否是当前最好创建自己的方法为请求类使用宏
在AppServiceProvider中boot方法:
AppServiceProvider
boot
use Illuminate\Support\Facades\Request; public function boot() { Request::macro('isCurrentRoute', function ($routeNames) { $bool = false; foreach (is_array($routeNames) ? $routeNames : explode(",",$routeNames) as $name) { if(request()->routeIs($name)) { $bool = true; break; } } return $bool; }); }
您可以在刀片或控制器中使用此方法
request()->isCurrentRoute('foo') // string route request()->isCurrentRoute(['bar','foo','xyz.*']) //array routes request()->isCurrentRoute('blogs,foo,bar,xyz.*') //string route seperated by comma
您可以使用内置laravel路由方法
request()->routeIs('home'); request()->routeIs('blogs.*'); //using wildcard
这是我使用的,我不知道为什么没有人提到它,因为它对我来说非常好。
Route::getCurrentRoute()->uri ; // this returns a string like '/home'
所以我在我的master.blade.php文件中使用它
master.blade.php
... @if ( Route::getCurrentRoute()->uri =='/dashbord' ) @include('navbar') @endif ...
使用帮助:
app('request')->route()->getName()