Laravel Debugbar无法显示消息

3

L5.0

我已经安装了DebugBar,并且它正在工作并显示在屏幕底部。但是我遇到了麻烦,无法弄清楚如何发送消息到控制台,在“Messages”下显示。

我在我的控制器中尝试了以下内容...

use DebugBar\DebugBar;
....
DebugBar::addMessage('This is a message');

甚至更多。
use DebugBar\DebugBar;
....
DebugBar::info('this is info');

但是我遇到了以下错误。
Call to undefined method DebugBar\DebugBar::info()

我的app.php文件包含以下内容。

'providers' => [
.....
'Barryvdh\Debugbar\ServiceProvider',
....


'aliases' => [ 
....
'DebugBar'  => 'Barryvdh\Debugbar\Facade',

我还是一个 Laravel 新手,所以不确定下一步应该去哪里查找。我已经查看了 http://phpdebugbar.com/docs/https://github.com/barryvdh/laravel-debugbar 的文档,但我认为我可能遗漏了某些东西。


Debugbar和DebugBar也许是什么? - rjdown
我在发布这个之后就尝试了,但没有改变。不过我还是会进行那个编辑的。 - dangel
1
在定义您的服务提供程序和门面时,请使用名称Debugbar(而不是DebugBar),只需使用\Debugbar - Tim Visée
5个回答

6

如果您想展示DebugBar,请按照以下步骤进行:

'providers' => [
    ...
    Barryvdh\Debugbar\ServiceProvider::class,
]

那么

'aliases' => [
    ...
    'DebugBar' => Barryvdh\Debugbar\Facade::class,
]

然后在您的控制器中编写如下代码:

app('debugbar')->error('Watch out..');

现在刷新浏览器,然后查看消息并享受。


2
不知道为什么,但这对我有效,而不是被接受的答案。 - WhyAyala

5

我认为问题在于您使用了错误的提供程序数组。应该这样:

'providers' => [
    ...
    Barryvdh\Debugbar\ServiceProvider::class,
]

请在您的config/app.php文件中进行如下设置。并使用下面的字符串来替代您之前编写的字符串:
'aliases' => [
    ...
    'DebugBar' => Barryvdh\Debugbar\Facade::class,
]

我在一个干净的Laravel-5安装上尝试了您的配置,但它并没有起作用。可能是由于绝对类路径造成的。使用上面列出的配置,它可以很好地工作。


我复制粘贴了你上面的内容,但是仍然出现了“Call to undefined method DebugBar\DebugBar::info()” 的错误。稍后我会尝试进行一个干净的5.1版本安装。 - dangel
2
唉...抱歉,我的代码中有一个打字错误。当然应该是 'DebugBar' => ... 而不是 'Debugbar' => ...。之后你可以使用 composer dump-autoload 更新类路径文件并重新启动开发服务器 php artisan serve - barfoos
3
好的!根据您提出的更改,我还需要将“use DebugBar\DebugBar”更改为简单的“use DebugBar”,这样就可以运行了。感谢martinweise的帮助! - dangel

3

对我来说,像我的IDE建议的那样自动注入DebugBar\DebugBar并没有自动工作,而是出现了这个错误。将其更改为Barryvdh\Debugbar\Facade as DebugBar解决了问题。似乎在默认的Laravel配置中安装了一个完全不同的名为“DebugBar”的包。

因此,如果在文件开头看到:

use DebugBar\DebugBar;

将其改为:

use Barryvdh\Debugbar\Facade as DebugBar;

此外,如果将其注册为外观(facade),你可以直接使用\DebugBar::addMessage('This is a message');等方法,无需先注入它,因为你已经告诉 Laravel 如何解析该类。这样做就不需要先使用use了。


0

同时确保在服务提供者列表中,Barryvdh\Debugbar\ServiceProvider::class排在第一位。


0
.env 文件中:
DEBUGBAR_ENABLED=true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接