如何修复symfony dd函数显示空白页的问题?

时间:2018-06-24 12:13:02

标签: php symfony symfony4

Symfony版本4.1

问题:使用dd时,我只能看到空白页。 body标签不包含任何内容。进行一些调试后,我发现调试输出有不同类型:clihtmlserver。在我的情况下,var_dumper.server_dumper服务被用作调试器类。我不知道symfony能否采取进一步措施。我猜有一个服务配置文件,我可以在其中传递html_dumper。但是我没有找到任何相关文件。 Symfony文档也未显示任何有关配置的信息。奇怪,但Google也未显示任何相关结果。

要补充一点,我在不稳定的情况下安装了symfony 4.1,然后我使用dd/dump得到了相同的结果。但是我最近运行过composer update,现在应该有一个全新的symfony版本。很长时间以来,我都使用xdebug,但有时转储var容易得多。

更新

我的代码:

namespace App\Controller\SuperAdmin;

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

class HomeController extends Controller
{
    /**
     * @Route("/", name="home")
     * @return Response
     */
    public function index()
    {
        dd(1);
        return $this->render('super-admin/home/index.html.twig');
    }
}

1 个答案:

答案 0 :(得分:3)

更新:刚刚确认Symfony 4.1.1已解决此问题。 dd现在可以按预期工作了。

其中一些内容在这里讨论:https://symfony.com/blog/new-in-symfony-4-1-vardumper-server

基本上,Symfony 4.1开箱即用:

# config/packages/dev/debug.yaml
debug:
    # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
    # See the "server:dump" command to start a new server.
    dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"

我想的目的是拦截调试字符串,并使用以下命令将它们打印到控制台上

bin/console server:dump

所以dd(1);将导致控制台中的输出以及浏览器中的空白网页。不确定Symfony的人是否打算将其设为默认行为。

如果您希望dd(1)出现在HTML页面中,则将目标位置更改为null。

# config/packages/dev/debug.yaml
debug:
    dump_destination: null

在任何情况下,dump()都能按预期工作。

看起来这实际上是一个错误:https://github.com/symfony/symfony/issues/27622

应该在下一个4.1.x版本中修复。