直接在 page.html.twig 中渲染字段

mas*_*f85 1 drupal twig drupal-8

如何直接在 page.html.twig 中呈现字段?

当我尝试渲染它时:

{{ node.field_my_field.value }}
Run Code Online (Sandbox Code Playgroud)

我得到:

Exception: Object of type Drupal\entity_reference_revisions\EntityReferenceRevisionsFieldItemList cannot be printed
Run Code Online (Sandbox Code Playgroud)

当我添加一个 .value 时,它​​仍然没有正确渲染(我使用带有子字段的段落)但出现以下错误:用户错误:“target_id”是无效的渲染数组键

Drupal\Core\Render\Element::children() (line 97 of core/lib/Drupal/Core/Render/Element.php).
User error: "target_revision_id" is an invalid render array key in Drupal\Core\Render\Element::children() (line 97 of core/lib/Drupal/Core/Render/Element.php).
User error: "_loaded" is an invalid render array key in Drupal\Core\Render\Element::children() (line 97 of core/lib/Drupal/Core/Render/Element.php).
User error: "_accessCacheability" is an invalid render array key in Drupal\Core\Render\Element::children() (line 97 of core/lib/Drupal/Core/Render/Element.php).
Run Code Online (Sandbox Code Playgroud)

那么我该如何渲染它呢?

Kev*_*ger 7

在 Drupal 8 & Twig 中,你可以渲染很多东西,例如:

 渲染字段值

例如,节点标题

{{ node.title.value }}
Run Code Online (Sandbox Code Playgroud)

渲染字段实体值

例如,一个领域的分类术语 categories

{{ node.field_categories.entity.name.value }}
Run Code Online (Sandbox Code Playgroud)

 渲染段落(实体)的字段值

您无法在 Twig 中打印 Paragraph 实体,但您可以打印每个字段

{{ node.field_my_field.entity.field_title.value }}
Run Code Online (Sandbox Code Playgroud)

在前面的例子中,field_title是我的段落的一个字段。


更进一步,您可以使用模块渲染显示模式Bamboo Twig
-项目页面
-关于 Bamboo Twig 的文章
-官方文档

使用 Bamboo Twig 以显示模式渲染实体

安装模块后启用子模块bamboo_twig_loader

{# Render node with nid 1 #}
{{ bamboo_render_entity('node', 1) }}

{# Render the teaser of node with nid 2 #}
{{ bamboo_render_entity('node', 2, 'teaser') }}
Run Code Online (Sandbox Code Playgroud)

使用 Bamboo Twig 渲染字段

{# Render the title of node 1  #}
{{ bamboo_render_field('title', 'node', 1) }}
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助!