在视图中获取Laravel 5控制器名称

时间:2015-04-09 21:47:59

标签: laravel-5

我们设置了旧的网站CSS,以便body标签使用Zend Framework 1获得控制器名称的id和操作名称的类。现在我们切换到Laravel 5.我发现通过Route类获取操作名称的方法,但无法找到控制器名称的方法。我没有在这样的Laravel文档中看到任何内容。有什么想法吗?

这就是你采取行动的方式。注入Route类,然后调用:

$route->getActionName()

我正在为控制器寻找类似的东西。我检查了整个路线类并没有找到任何东西。

4 个答案:

答案 0 :(得分:44)

如果您的布局是Blade模板,则可以创建一个视图编辑器,将这些变量注入到您的布局中。在 app / Providers / AppServiceProvider.php 中添加如下内容:

public function boot()
{
    app('view')->composer('layouts.master', function ($view) {
        $action = app('request')->route()->getAction();

        $controller = class_basename($action['controller']);

        list($controller, $action) = explode('@', $controller);

        $view->with(compact('controller', 'action'));
    });
}

然后,您的布局模板中会有两个变量:$controller$action

答案 1 :(得分:7)

我使用简单的解决方案。您可以在任何地方测试和使用它,也可以查看您的观点:

{{ dd(request()->route()->getAction()) }}

答案 2 :(得分:3)

我将简单地用作吼叫

$request->route()->getActionMethod()

答案 3 :(得分:1)

要获得类似PostController的内容,请尝试以下操作...

preg_match('/([a-z]*)@/i', $request->route()->getActionName(), $matches);
$controllerName = $matches[1];

$ matches [1]包括第一组,而$ matches [0]包括匹配的所有内容。所以也不需要@。