在Laravel v4中,我可以使用…

Route::currentRouteName()

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


当前回答

在一个控制器动作中,你可以这样做:

public function someAction(Request $request)
{
    $routeName = $request->route()->getName();
}

$request是由Laravel的服务容器解析的。

getName()仅返回已命名路由的路由名,否则为空(但您仍然可以探索\Illuminate\Routing\ route对象以获得其他感兴趣的内容)。

换句话说,你应该像这样定义你的路由,并返回"nameOfMyRoute":

Route::get('my/some-action', [
    'as' => 'nameOfMyRoute',
    'uses' => 'MyController@someAction'
]);

其他回答

你可以使用这行代码:url()->current()

在刀片文件中:{{url()->current()}}

试试这个

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

or

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

$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 5.3路由文档

Laravel v6 . x 7. x

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

**截至2019年11月11日- 6.5版**

Laravel 6。X路由文档

有一个选项可以使用request来获取路由

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

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

url()->current();
\Request::path()

我用这个来获取当前uri

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

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

或者通过helper方法:

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

输出的例子:

"home.index"