如何在drupal 8中打印节点对象
在drupal 7中,我们可以使用devel模块中的如何在drupal 8中打印节点对象,drupal,drupal-8,Drupal,Drupal 8,在drupal 7中,我们可以使用devel模块中的kpr()或phpprint\r()和var\u dump()函数来打印node.tpl文件中的$node对象或hook preprocess节点,以便调试和查找字段或 但在Drupal8中,我们不能在twig中使用php函数,我尝试了kint()和dump()在twig中打印节点,但没有成功。(我已经在services.yml中设置了debug:true)(更详细的信息:twig文件中的kint(node)会产生无限循环,并导致浏览器内存耗尽
kpr()
或phpprint\r()
和var\u dump()
函数来打印node.tpl文件中的$node对象或hook preprocess节点,以便调试和查找字段或
但在Drupal8中,我们不能在twig中使用php函数,我尝试了kint()
和dump()
在twig中打印节点,但没有成功。(我已经在services.yml中设置了debug:true
)(更详细的信息:twig文件中的kint(node)
会产生无限循环,并导致浏览器内存耗尽)
所以问题是如何在Drupal8中使用twig或hook预处理节点打印节点对象
Q更新版本1.0:
我为article:node--article.html.twig提供了自定义的细枝模板,它可以正常工作:
<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>
{{content.body}{{render}{{this works}
{{kint(node.field_custom.value)}{{#打印自定义字段值时没有任何问题#}
{{kint(node)}}{{#这会导致无限循环和内存问题#}
{{content}{#打印所有内容字段没有任何问题#}
{{kint(content)}{{#这不会发生或显示任何事情!#}
{{kint(label)}{{#无限类节点#}
我知道kint()
函数不是问题所在,因为它显示我为测试创建的自定义数组和对象。
所以问题是节点对象本身。它非常大,使用kint()打印时会出现内存限制问题。当我在php.ini
文件中将内存限制更改为-1memory\u limit=-1
进行测试时,占用了我系统的所有16GB ram,这还不够
因此,我将modules/devel/kint/kint/config.default.php中kint()函数的深度从7减少到4($\u kintSettings['maxLevels']=4;
)和php.ini中的内存限制=128M
现在一切都好了,
希望它能帮助别人。另一个选择是使用不像Kint那样占用大量内存的。我觉得它更人性化,更好看
function YOURTHEME_preprocess_node(&$variables){
vardumper($variables);
}
1-安装Devel+Twig Vardumpper
2-在www.example.com/admin/config/development/devel
启用显示$page数组
3-在www.example.com/admin/config/development/devel
启用Symfony var转储程序
4-在小枝中添加
{{ dump() }} {# all #}
{{ dump(attributes) }} {# one #}
{{ dump(_charset) }} {# #}
安装了develkint模块后,模板文件中的{{{kint()}}
对我有用。请看,您必须确保“状态消息”块位于页面上。@2pha我已经用一些示例更新了我的问题。我检查了状态消息,它在标题区域的阻止列表中处于活动状态,标题区域被打印到页面--article.html.twig,但我看不到这与kint输出之间的任何关系。我不知道怎么回事@2pha ksm()函数在status messages位置打印变量,因为它使用drupal\u set\u message函数很高兴您对它进行了排序。您还可以通过设置kint将输出的最大级别来解决内存问题。例如:$maxLevels=4代码>