为什么Route :: currentRouteName()在控制器方法中的laravel 5中不起作用

时间:2016-03-03 06:55:22

标签: regex laravel routes

为什么Route :: currentRouteName()在控制器方法中不在laravel 5中工作,但是当我在类名工作之前提供'\'时。我需要知道在这种情况下,在类之前添加反斜杠的原因。可能是一些oops scenerio,我不知道。请指导

$ name = \ Route :: currentRouteName();

2 个答案:

答案 0 :(得分:2)

您需要了解PHP命名空间的工作原理。

Route不在控制器命名空间内,因此您需要为Route类提供完整的命名空间才能加载它。 Route位于根命名空间中,因此您使用\Route引用它,就像在目录结构中一样。

假设你的控制器是这样的:

<?php namespace App\Http\Controller
class HomeController extends Controller{

   public function index(){
      //Doing this will throw a Not Found exception because route is 
      //not inside `App\Http\Controller` namespace
      $name = Route::currentRouteName(); 

      //However if you specify the correct namespace it works like so:
      $name = \Route::currentRouteName(); 
   }

}

您可以在此处详细了解命名空间:

http://php.net/manual/en/language.namespaces.php

答案 1 :(得分:0)

您可以使用

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

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