首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Drupal8中打印节点对象

如何在Drupal8中打印节点对象
EN

Stack Overflow用户
提问于 2020-03-03 04:32:45
回答 3查看 2.1K关注 0票数 1

在Drupal7中,我们可以使用devel模块中的kpr()或者php的print_r()var_dump()函数来打印node.tpl文件中的$node对象,或者挂钩预处理节点,以便调试和查找字段或..

但是在Drupal8中,我们不能在twig中使用php函数,我尝试了kint()dump()来打印twig中的节点,但是没有成功。(我已经在services.yml中设置了debug: true )(更多细节: twig文件中的kint(node)会造成无限循环,并导致浏览器中的内存空间耗尽)。

因此,问题是如何在Drupal8中使用twig或hook预处理节点打印节点对象?

Q更新1.0版:

我有一个自定义的twig模板,它可以很好地工作:

代码语言:javascript
运行
复制
<article>

<div>
    {{ content.body|render }} {# this works #}
</div>

<footer>
    {{ kint(node.field_custom.value) }} {# prints the custom field value without any problem #}
    {{ kint(node) }} {# this causes infinite loop and memory issue #}
    {{ content }} {# prints all content fields without any problem #}
    {{ kint(content) }} {# nothing happen or display with this! #}
    {{ kint(label) }} {# infinite like node #}
</footer>

EN

回答 3

Stack Overflow用户

发布于 2020-03-03 17:15:19

我知道kint()函数不是问题所在,因为它显示了我为测试而创建的自定义数组和对象。所以问题出在节点对象本身。它非常大,并且使用kint()打印它会产生内存限制问题。当我在php.ini文件中将内存限制更改为-1 memory_limit= -1进行测试时,它占用了我系统中所有的16‘t内存,这是不够的!

因此,我将kint()函数在modules/devel/kint/kint/config.default.php ( $_kintSettings['maxLevels'] = 4; )中的深度从7减少到4,并在php.ini中将memory_limit=128M函数的深度减少到4。

现在一切都正常了,希望它能帮助别人。

票数 2
EN

Stack Overflow用户

发布于 2020-07-09 21:56:42

另一种选择是使用VarDumper module,它不像Kint那样占用大量内存。我发现它对用户更友好,而且更好看!

代码语言:javascript
运行
复制
function YOURTHEME_preprocess_node(&$variables){
  vardumper($variables);
}

票数 0
EN

Stack Overflow用户

发布于 2020-12-08 02:18:41

1-安装Devel + Twig VarDumper

2-在www.example.com/admin/config/development/devel

启用 Display $page阵列

3-在www.example.com/admin/config/development/devel

启用 Symfony变量转储程序

4-在细枝中添加

代码语言:javascript
运行
复制
{{ dump() }} {# all #}
{{ dump(attributes) }} {# one #}
{{ dump(_charset) }} {# #}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60496226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档