【问题标题】:Can't make dump() work in Symfony 4.2 toolbar无法使 dump() 在 Symfony 4.2 工具栏中工作
【发布时间】:2021-03-10 06:50:03
【问题描述】:

我是 Stack Overflow 和编程的新手,而且我的英语不好,如果我没有正确提问,请提前道歉。

我正在学习如何使用 Symfony,但我无法让 dump() 函数正常工作。我按照以下说明进行操作: https://symfony.com/doc/current/components/var_dumper.html

我使用 composer 安装了 VarDumper 组件和调试包:

composer require --dev symfony/debug-bundle
composer require --dev symfony/var-dumper

然后我在我的应用控制器中使用了 dump() 以便在我提交表单时显示 HTTP 请求:

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;

 class BlogController extends AbstractController
{
    /**
     * @Route("/blog/new", name="blog_create")
     */
    public function blog_create(Request $request): Response
    {
        dump($request);
        return $this->render('blog/create.html.twig',['request'=>$request]);
    }
}

dump() 应该出现在调试工具栏中。相反,当我调用“blog/new”时,我只是正常显示了表单页面,而我的调试工具栏没有显示。但是,我知道 VarDumper 组件可以工作,因为我尝试使用转储服务器,并且每次调用“blog/new”时控制台都会向我显示转储结果。我可以在这个转储中找到我的表单内容。

有人知道如何在调试工具栏中显示 dump() 的结果而不破坏它吗?

问候,

神秘

【问题讨论】:

  • 我不认为转储请求是个好主意...它可能很大。你到底想甩掉什么?任何特定的变量?
  • 只有当你有一个合理有效的 html 页面时,工具栏才会显示。在浏览器中使用 ctrl-u 并验证是否具有预期的 html 头部主体部分。当然,您必须处于开发模式。我还假设您使用的是实际的 Symfony 框架,而不仅仅是一些组件。最后,除非您计划支持旧平台,否则没有理由使用 4.2。 4.4 是长期支持版本。
  • @Cerad html是有效的,工具栏只有在我添加行时才会崩溃 dump($request);我使用“symfony -V”来获取版本,输出是“Symfony CLI version v4.21.0 (2020-11-26T16:18:20+0000 - stable)”。当我使用“php bin/console --version”时,我得到“Symfony 5.1.8 (env: dev, debug: true)”。所以我假设一切都井井有条。你怎么看?
  • 所以 5.1 是实际的框架版本,这意味着您使用的是最新版本。我假设你也使用'symfony server:start'作为你的开发服务器?我做了一个快速测试,转储 $request 没有问题。也许尝试不将 $request 传递给您的树枝模板。无论如何我都没有理由这样做。
  • 还是不行。传递给转储的任何变量都会使工具栏崩溃。 :/我不确定我做对了一切,一切对我来说都是新的。我使用 symfony server:start 作为我的开发服务器,是的。

标签: php symfony dump var-dump


【解决方案1】:

我认为您的请求是 POST,因为您正在创建新的博客条目。你应该试试这个:

$content = $request->getContent();

现在将有您的请求正文,或最终尝试:

$content = $request->request->all();

这将包含所有传入的内容。尝试转储此值。

【讨论】:

  • 还是不行。我将 dump() 与所有类型的变量一起使用,并且工具栏从不显示。这很奇怪,因为它出现在 html 文件中,所以我认为它与转储实用程序在工具栏中的脚本编写方式有关。
【解决方案2】:

您是否将var-dumper 组件添加到您的项目中?

composer require --dev symfony/var-dumper

确保已安装symfony debug bundle

composer require --dev symfony/debug-bundle

您可以dump(...) 不使用此组件,但转储将显示在页面顶部而不是工具栏上。

如果您安装该组件,转储将显示在工具栏中,您将能够在 Twig 模板中使用 {% dump(myVar) %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多