如何直接在page.html.twig中渲染字段?
当我尝试渲染它时:
{{ node.field_my_field.value }}
我明白了:
Exception: Object of type Drupal\entity_reference_revisions\EntityReferenceRevisionsFieldItemList cannot be printed
当我添加.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).
那我怎么渲染呢?
答案 0 :(得分:3)
在Drupal 8& Twig你可以渲染很多东西:
例如,节点标题
{{ node.title.value }}
例如,分类术语categories
{{ node.field_categories.entity.name.value }}
您无法在Twig中打印Paragraph实体,但可以打印每个字段
{{ node.field_my_field.entity.field_title.value }}
在上一个示例中,field_title
是我的段落的字段。
为了更进一步,您可以使用模块Bamboo Twig
渲染显示模式
- Project page
- Article about Bamboo Twig
- Official Documentation
安装模块并启用子模块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') }}
{# Render the title of node 1 #}
{{ bamboo_render_field('title', 'node', 1) }}
希望它会对你有所帮助!
答案 1 :(得分:0)
为了在树枝模板中渲染字段,您需要一个 contrib 模块;除非你使用 hook_preprocess_page() 实现。
正如建议的答案中已经提到的那样,使用 Bamboo Twig 绝对可以完成您的工作。不过,您必须启用其中一个子模块才能实现这一点,一开始似乎有点尴尬。
另一种更常见的解决方案是使用 Twig Tweak 模块,您可以使用它执行以下操作(从他们的 cheat sheet 复制):
{{ drupal_field('field_image', 'node', 1) }}
{{ drupal_field('field_image', 'node', 1, 'teaser') }}
{{ drupal_field('field_image', 'node', 1, {type: 'image_url', settings: {image_style: 'large'}}) }}