Twig的转储功能返回一个空白屏幕

Sam*_*off 7 symfony twig

我在Symfony2中使用Twig的转储功能.我已根据其说明配置了Symfony .

我有一个page变量和一个orders数组.dump适用于页面,但不适用于订单.当我在订单上调用它时,我得到一个白色屏幕 - 没有php错误或任何东西.我不知道如何调试这个.

有任何想法吗?

Ark*_*lar 7

一点解释

在这种情况下,白色(空白)屏幕意味着PHP致命错误:允许的内存大小耗尽.在我的调查过程中,我发现了一些奇怪的事情:twig在安装了VarDumper组件时使用了var_dump函数.

如果没有安装VarDumper,我认为它可以使用,但是dump()symfony的VarDumper组件文档中的twig函数就像复杂的解决方案一样,这很奇怪.

因此,使用VarDumper的dump()函数而不是本机var_dump()解决了内存问题(因为VarDumper将结果转储集合限制到足够的量).另外VarDumper dump()提供更方便的结果 - 您可以单击树叶来显示/隐藏其内容.

究竟需要做什么

  • 如果未安装,请安装VarDumper组件
  • 转到文件: vendor/twig/twig/lib/Twig/Extension/Debug.php
  • 查找twig_var_dump功能
  • 将所有var_dump()来电替换为dump()
  • 删除/评论ob_start() + ob_get_clean()构造(如果您使用var_dump()它,则需要它,因为它会立即回应数据,但dump()行为更加智能)

要么

使用此复制+替换整个函数;)

function twig_var_dump(Twig_Environment $env, $context)
{
    if (!$env->isDebug()) {
        return;
    }

//    ob_start();

    $count = func_num_args();
    if (2 === $count) {
        $vars = array();
        foreach ($context as $key => $value) {
            if (!$value instanceof Twig_Template) {
                $vars[$key] = $value;
            }
        }

        dump($vars);
    } else {
        for ($i = 2; $i < $count; $i++) {
            dump(func_get_arg($i));
        }
    }

//    return ob_get_clean();
}
Run Code Online (Sandbox Code Playgroud)

PS:问题在2013年被问到,但我希望它有所帮助,因为我现在遇到了这个问题.

我的背景:

"symfony/symfony": "2.5.*"
"symfony/var-dumper": "~2.6"
Run Code Online (Sandbox Code Playgroud)