4

我正在dump使用twig.

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

树枝转储折叠

当我单击箭头时,我可以通过展开数据来显示数据,如下所示:

树枝转储展开

问题:

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

4

7 回答 7

3

您可以使用 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

于 2016-12-30T08:37:05.497 回答
3

一种快速的方法是将其添加到您的 css 中:

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

箭不再起作用了。但是,如果您不关心切换,则可以使用此 css 规则隐藏它们:

.sf-dump-toggle {
    display: none;
}
于 2017-10-26T12:21:44.403 回答
1

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

$(".sf-dump-expanded").removeClass("sf-dump-expanded").addClass("sf-dump-compact");
于 2019-10-15T03:20:11.077 回答
1

转储数据后,您必须 ctrl + 左键单击根节点

于 2019-08-08T21:51:59.857 回答
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]);
    }
}

其次,让 twig-bridge 使用它。在services.yaml中,在 下添加services:

    var_dumper.html_dumper: '@App\Services\MyHtmlDumper'

就这样 !

您可以为 选择其他值maxDepth,或更改其他选项。

于 2019-12-04T12:58:47.787 回答
0

编辑:这是针对 php dump() 函数的。对于树枝,请参阅我的另一个答案。

为了影响 php dump() 函数,您可以设置 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

于 2017-10-10T08:13:47.013 回答
-1

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

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

{{ dump(tour.getTourId) }}

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

那么你会这样打电话:

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

getDate[0]Tour 对象中 Dates 数组集合中的第一个元素在哪里。元素是一个对象,所以你称它为 method getDate

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

于 2016-12-30T05:02:42.993 回答