在Laravel v4中,我能够使用...获得当前的路线名称。
Route::currentRouteName()
我如何在Laravel v5和Laravel v6中做到这一点?
在Laravel v4中,我能够使用...获得当前的路线名称。
Route::currentRouteName()
我如何在Laravel v5和Laravel v6中做到这一点?
Answers:
试试这个
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();
检索请求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 v5.3 ... v5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Laravel v6.x ... 7.x
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
**当前为2019年11月11日-6.5版**
有一个使用请求获取路线的选项
$request->route()->getName();
api/...
Route::currentRouteName();
完美:)
$request::route()->getName()
如果您已经在使用$ request,或者可以使用global helper request()::route()->getName()
。
request()->route()->getName()
可以使用的方式。
request()
在视图中使用帮助器功能特别有用。 request()->route()->getName()
是最好的选择。
使用Laravel 5.1,您可以使用
\Request::route()->getName()
{{ route(\Request::route()->getName()) }}
。非常感谢!
找到了一种方法来查找适用于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();
如果要在多条路线上选择菜单,可以这样做:
<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中也进行了测试
希望这对某人有帮助。
Laravel 5.2您可以使用
$request->route()->getName()
它将为您提供当前的路线名称。
name()
方法将添加或更改名称,而该getName()
方法将返回该名称。
在5.2中,您可以将请求直接用于:
$request->route()->getName();
或通过辅助方法:
request()->route()->getName();
输出示例:
"home.index"
最快捷的方法是路线立面
\Route::current()->getName()
这也适用于laravel 5.4。*
在控制器操作中,您可以执行以下操作:
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'
]);
现在在Laravel中,5.3
我看到可以通过类似的方法进行尝试:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
访问当前路线
在Blade模板中获取当前路线名称
{{ Route::currentRouteName() }}
有关更多信息https://laravel.com/docs/5.5/routing#accessing-the-current-route
访问当前路由(v5.3及更高版本)
您可以在Route外观上使用current,currentRouteName和currentRouteAction方法访问有关处理传入请求的路由的信息:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
有关Route门面和Route实例的基础类,请参阅API文档,以查看所有可访问的方法。
参考:https : //laravel.com/docs/5.2/routing#accessing-the-current-route
我曾经在larvel 5.3中获取路线名称
Request::path()
通过查看,\Illuminate\Routing\Router.php
您可以currentRouteNamed()
通过在控制器方法中插入路由器来使用该方法。例如:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
或使用Route门面:
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');
}
在控制器中访问当前路由名称
即-http:// localhost / project_name / edit
$ request-> segment(1); //编辑
(要么)
$ request-> url(); // http:// localhost / project_name / edit
您可以使用以下代码在刀片文件中获取路由名称
request()->route()->uri