Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在drupal 8中打印节点对象_Drupal_Drupal 8 - Fatal编程技术网

如何在drupal 8中打印节点对象

如何在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)会产生无限循环,并导致浏览器内存耗尽

在drupal 7中,我们可以使用devel模块中的
kpr()
或php
print\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
文件中将内存限制更改为-1
memory\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