如何从节点模板中的实体引用中呈现字段?[Drupal 8]


9

对于上下文,我正在处理两种内容类型:article和team_profile。在文章节点中,我们有一个实体引用字段,其中拉入team_profile节点作为作者信息。

我只是用一种新的显示模式渲染实体,但是我们的设计将照片设置在发布日期和名称的正上方,彼此相邻: 作者信息设计的屏幕截图

在D7中,我将dpm($content)向下钻取节点信息,双击并拉出其余的参考路径。我正在使用kint并能够将实体参考内容吐出到一定水平{{ kint(content.field_blog_author[0]['#node']) }}。我要访问的下一个级别是values,但是尝试以下操作会给我NULL:

  • content.field_blog_author[0]['#node’][‘values’]
  • content.field_blog_author[0]['#node’]=>values
  • content.field_blog_author[0]['#node’]->values

我最终希望从引用的节点渲染titleand field_team_image字段(在kint输出中可见)。我没有找到有关此信息的信息是文档还是通过搜索。有人可以帮助我摆脱困境吗?

Answers:


13

#node实际上是当前节点。

如果要访问字段及其值,请从节点(而不是内容)开始,该节点是具有配置的字段的渲染数组。

您可以像这样访问参考实体{{ node.field_blog_author.entity }}

从那里,您可以再次继续到要显示的引用实体的字段。您可以尝试调用view方法,将使用默认设置进行查看,也可以将视图模式作为字符串或数组显示设置传递给它(不确定树枝中的确切语法)。

另外,作为我的标准参考,请参阅http://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet,以获取有关内容实体,其结构以及如何访问值的全面概述。大多数情况也适用于树枝。

最后,当试图找出内容实体中的内容时,请使用node.toArray(),它为您提供了一种非常类似于您将其作为对象进行访问的数组表示形式。而内部结构却大不相同。


谢谢你,伯迪尔。{{ kint(node.field_blog_author.entity) }}确实输出了一个很好的引用节点数组,但是现在我不能再深入了。{{ kint(node.field_blog_author.entity.title) }},例如,中断页面,不加载任何资源或超出标题区域的任何内容。相同nid或其他。只是为了咯咯地笑,尝试将引用的实体包括在节点内容中,并{{ node.field_blog_author.entity }}返回了一条错误消息,看似该节点无法在模板中显示。
alexbea '16

看起来这些可能是受保护的值。听起来对吗?也许我只需要为照片创建一个查看模式,然后为名称使用“标签”显示模式。
alexbea '16

是的,他们受到保护。就像我说的,使用toArray()(也可用于node.field_blog_author.entity.title是一个字段对象),如果您想赋值,则需要... entity.title.value。确保阅读参考的备忘单,它解释了很多这样的事情。
贝尔迪尔

1
感谢您的帮助。但是,我不太了解如何使用备忘单中的信息。.value在这种情况下,添加确实有效,并回答了我的原始问题。
alexbea '16

@berdir网站网址已损坏。
chalo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.