为什么Route :: currentRouteName()在控制器方法中不在laravel 5中工作,但是当我在类名工作之前提供'\'时。我需要知道在这种情况下,在类之前添加反斜杠的原因。可能是一些oops scenerio,我不知道。请指导
$ name = \ Route :: currentRouteName();
答案 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();
}
}
您可以在此处详细了解命名空间:
答案 1 :(得分:0)
您可以使用
\Request::route()->getName()
或
\Route::getCurrentRoute()->getPath();