Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 小枝';s dump函数返回一个空白屏幕_Symfony_Twig - Fatal编程技术网

Symfony 小枝';s dump函数返回一个空白屏幕

Symfony 小枝';s dump函数返回一个空白屏幕,symfony,twig,Symfony,Twig,我正在Symfony2中使用Twig函数。我已根据配置Symfony 我有一个page变量和一个orders数组转储可以在页面上工作,但不能在订单上工作。当我在订单上调用它时,我会看到一个白色屏幕——没有php错误或任何东西。我不知道如何调试这个 有什么想法吗?很可能您的PHP内存已经达到极限。尝试在php.ini中增加它我也有同样的问题,将内存限制增加到1Gb没有帮助。 就我而言,我想打电话给 {{ dump() }} 没有参数(在当前模板的上下文中查看所有可用的变量。在我的例子中

我正在Symfony2中使用Twig函数。我已根据配置Symfony

我有一个
page
变量和一个
orders
数组<代码>转储可以在页面上工作,但不能在订单上工作。当我在订单上调用它时,我会看到一个白色屏幕——没有php错误或任何东西。我不知道如何调试这个


有什么想法吗?

很可能您的PHP内存已经达到极限。尝试在php.ini中增加它

我也有同样的问题,将内存限制增加到1Gb没有帮助。 就我而言,我想打电话给

    {{ dump() }} 

没有参数(在当前模板的上下文中查看所有可用的变量。在我的例子中,以下内容有帮助:,尽管内存限制问题仍然存在)

这个问题可能没有单一的答案,因为一系列因素可能导致它。正如其他人所建议的,增加PHP的内存限制可能会有所帮助。在我的情况下,这没有帮助,但是,我能够通过安装xdebug来解决这个问题

到目前为止,解决这一问题的清单似乎如下所示:

  • 确保安装了最新版本的xdebug
  • 如果这不能解决问题,请尝试增加PHP内存限制
  • 一点解释 在这种情况下,白色(空白)屏幕意味着PHP致命错误:允许的内存大小耗尽。在我的调查中,我发现当我安装了VarDumper组件时,twig使用了
    var\u dump
    功能

    我认为如果没有安装VarDumper组件,它可以正常工作,但是在symfony的VarDumper组件文档中包含的twig的
    dump()
    函数就像一个复杂的解决方案,这很奇怪

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

    你到底需要做什么
    • 如果未安装
    • 转到文件:
      vendor/twig/twig/lib/twig/Extension/Debug.php
    • 查找
      twig\u var\u dump
      函数
    • 替换对
      dump()的所有
      var\u dump()
      调用
    • 删除/注释
      ob_start()+ob_get_clean()
      construction(这是必需的 如果使用
      var\u dump()
      即时回显数据,但
      dump()
      执行 (更智能)

    使用以下方法复制并替换整个函数:

    function twig_var_dump(Twig_Environment $env, $context)
    {
        if (!$env->isDebug()) {
            return;
        }
    
        $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));
            }
        }
    
    }
    

    Arkemlar的答案很好用

    但是


    在这之后,在我的例子中,twig dump()在phpunit的功能测试中导致了一个运行时异常。

    看起来你是对的,但我不明白怎么做。这只是与我的实例数据相关的一个表单——我已经将限制提高到200MB,但仍然没有骰子。有什么想法吗?你的错误记录里有什么吗?您是否启用了错误报告功能?我不记得了,但我不这么认为。我做的一件事是将数据作为json响应返回,然后在inspector中查看它。但我从未发现根本原因。这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时在自己的帖子上发表评论,这是一个潜在的问题答案,因为我遇到了完全相同的问题,这就是解决问题的方法。你应该在官方的细枝上提出一个拉动请求repository@Charles-AntoineFournel这是个好主意,我会在未来在目前的状态下进行研究,我假设symfony 3.0.9具有此功能,因为我在新安装的项目中看到dump()函数在我的twig模板中工作。@Arkemlar不幸的是,这在symfony 4中仍然存在–建议的修复确实有帮助。@bleistift2,看来我们需要做一个失败的测试,它将解决这个问题并打开PR。我希望我有时间来做…如果你有新问题,请点击按钮提问。如果你有足够的声誉,问题就来了。或者,“星”它作为一个最喜爱的,你会被告知任何新的答案。
    "symfony/symfony": "2.5.*"
    "symfony/var-dumper": "~2.6"