如何制作twig的转储功能以显示展开的数据?

时间:2016-12-30 01:20:16

标签: symfony twig frontend dump unfold

我正在使用dump的{​​{1}}功能。

但它显示数据“折叠”,如下所示:

Twig Dump Folded

当我点击箭头时,我可以通过展开来显示数据,就像在这里:

Twig Dump Unfolded

问题:

有没有办法告诉twigtwig直接展示完全展开的对象。

Thansk!

7 个答案:

答案 0 :(得分:2)

您可以使用javascript(jQuery)执行此操作:

    // Expand all dump levels of all sf-dumps on a page.
    $("pre.sf-dump").each(function() {
        $(this).find("a.sf-dump-toggle:gt(0)").each(function(i, a){
            a.click();
        });
    })

这模拟用户点击页面上每个sf-dump的每个转储切换(不包括gt(0)的第一个)。

编辑:我添加了一个each()函数,使脚本可以处理页面上可能存在的任意数量的sf-dump。感谢@Xavi

答案 1 :(得分:1)

快速的方法是在你的css中添加它:

pre.sf-dump .sf-dump-compact {
    display: block;
}

箭头不再适用了。但是如果你不关心切换,你可以用这个css规则隐藏它们:

.sf-dump-toggle {
    display: none;
}

答案 2 :(得分:1)

一旦转储了数据,就必须按住Ctrl键并在根节点上单击鼠标左键

答案 3 :(得分:1)

您可以创建自己的转储服务,并让twig使用它,而不是twig-bridge扩展默认使用的服务。

首先,创建您自己的服务类,扩展实际的类:

namespace App\Services;

use Symfony\Component\VarDumper\Dumper\HtmlDumper;

class MyHtmlDumper extends HtmlDumper
{
    public function __construct($output = null, string $charset = null, int $flags = 0) {
        parent::__construct($output, $charset, $flags);
        $this->setDisplayOptions(['maxDepth' => 3]);
    }
}

第二,让树枝桥使用它。在services.yaml的{​​{1}}下添加:

services:

仅此而已!

您可以为 var_dumper.html_dumper: '@App\Services\MyHtmlDumper' 选择另一个值,或更改其他选项。

答案 4 :(得分:0)

设置var dumper的显示选项:

VarDumper::setHandler(function ($var) {
    $cloner = new VarCloner();
    $dumper = 'cli' === PHP_SAPI ? new CliDumper() : new HtmlDumper();
    $dumper->setDisplayOptions(['maxDepth' => 3]);     

    $dumper->dump($cloner->cloneVar($var));
});

请参阅https://symfony.com/doc/current/components/var_dumper/advanced.html

答案 5 :(得分:0)

要使对象转储完全折叠,请使用以下jQuery代码段:

$(".sf-dump-expanded").removeClass("sf-dump-expanded").addClass("sf-dump-compact");

答案 6 :(得分:-1)

我不确定你在照片中显示的是什么,但让我们说比如它是一个游览实体。然后,您可以使用您的setter和getter访问并显示在dump中。所以在上面你有一张显示Tour对象的图片并将其转储到Twig中。游览实体可能有getTourId()类型的方法。

所以要在你的树枝上展示,你可以这样做:

{{ dump(tour.getTourId) }}

当你看到多个级别时,它可能是一个数组集合。然后你需要得到子实体可以调用它的方法。假设一个游览实体,有一个日期集合(一个日期实体),也许日期实体有一个getDate()函数。

那么你会这样打电话:

{{ dump(tour.getDate[0].getDate) }}

其中getDate[0]是Tour对象中Dates数组集合中的第一个元素。元素是一个对象,因此您可以将其称为方法getDate

这就是Twig的工作方式。它基于所有对象,并且非常易于使用。通常不使用转储。您不希望在生产环境中使用它,因为您可能会让用户看到着名的500错误页面。