我正在dump使用twig.
但它显示数据“折叠”,如下所示:
当我单击箭头时,我可以通过展开数据来显示数据,如下所示:
问题:
有没有办法告诉twig或dump直接显示完全展开的对象。
您可以使用 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
一种快速的方法是将其添加到您的 css 中:
pre.sf-dump .sf-dump-compact {
display: block;
}
箭不再起作用了。但是,如果您不关心切换,则可以使用此 css 规则隐藏它们:
.sf-dump-toggle {
display: none;
}
要使对象转储完全折叠,请使用以下 jQuery 片段:
$(".sf-dump-expanded").removeClass("sf-dump-expanded").addClass("sf-dump-compact");
转储数据后,您必须 ctrl + 左键单击根节点
您可以创建自己的转储服务并让 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,或更改其他选项。
编辑:这是针对 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
我不确定您在图片中展示的是什么,但假设它是一个旅游实体。然后您可以使用您的 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错误页面。