访问引用的节点字段 - 字段级别模板 -- theming 领域 和 entities 领域 drupal 相关 的问题

Access A Referenced Node's Fields - Field Level Templating


简体版||繁體版
0
vote

问题

中文

我的内容类型,具有参考字段到另一个内容类型。这允许无限量的条目。

我为此字段创建了一个模板: field--node--field-my-fields.html.twig

我希望能够访问我引用的节点的字段。通常您可以通过访问实体来执行此操作,但我似乎无法执行此操作。

  {% for item in items %}   {{ kint(item.content) }} {% endfor %}   

我觉得这应该真的很简单,但我只是找不到进入田地的方法!

提前感谢任何答案。

英文原文

I have a content type with a reference field to another content type. This allows an unlimited amount of entries.

I've created a template for this field: field--node--field-my-fields.html.twig

I want to be able to access the fields of my referenced node. Usually you can do this by accessing the entity, but I can't seem to do this.

{% for item in items %}   {{ kint(item.content) }} {% endfor %} 

I feel like this should be really simple, but I just can't find a way to get access to the fields!

Thanks in advance for any answers.

     
       
       

回答列表

2
 
vote
vote
最佳答案
 

item.content 中是一个渲染阵列,通常您可以在"#" 键中访问引用的实体(用于大多数显示设置):

  {{ item.content['#node'].field_name.value }}   

字段对象

获取字段值的另一种方法是使用 99887662中的字段对象和循环浏览FieldItemList:

  {% for item in element['#items'] %}     {{ item.entity.field_name.value }} {% endfor %}   

然后,您是独立的字段的显示设置。

背景信息,请从berdir https://www.md -systems.ch/blog/techblog/2017/02/20/twig-and-entity-field- API-or-over-to-connow-nodehtmltwig 用于格式化输出和底层对象之间的差异。在字段模板中,您不需要返回父节点对象,因为您可以直接访问字段对象。如果要访问其他字段,则可以从 element['#object']中获取父节点

 

In item.content is a render array and usually you can access a referenced entity in a '#' key (for most display settings):

{{ item.content['#node'].field_name.value }} 

Field Object

Another way to get the field values is using the field object in element['#items'] and loop through the FieldItemList:

{% for item in element['#items'] %}     {{ item.entity.field_name.value }} {% endfor %} 

Then you are independent from the display settings of the field.

For background information see this blog post from Berdir https://www.md-systems.ch/blog/techblog/2017/02/20/twig-and-entity-field-api-or-how-to-take-control-of-nodehtmltwig for the difference between formatted output and the underlying objects. In a field template you don't need to go back to the parent node object, because you can access directly the field object. You can get the parent node from element['#object'] though, if you want to access other fields.

 
 
   
   
0
 
vote

在mytheme上使用预处理功能。您可以:

  function MYTHEME_preprocess_field(&$variables, $hook) {   ...   $element = $variables['element'];   $title  = $element['#object']->getTitle();   $variables['title']['#markup'] = $title;   ... }   
在此时,在Field.Twig中您拥有 {{ title }} 变量
 

Using preprocess function on MYTHEME.theme file you can :

function MYTHEME_preprocess_field(&$variables, $hook) {   ...   $element = $variables['element'];   $title  = $element['#object']->getTitle();   $variables['title']['#markup'] = $title;   ... } 

At this point, in field.twig you have the {{ title }} variable

 
 

相关问题

2  如何让Drupal 8忘记旧的删除字段?  ( How to make drupal 8 forget an old deleted field ) 
将Drupal 8站点部署到新服务器后,我们有一些子系统或其他人记住的旧删除字段的问题,导致此错误在Cron运行时被抛出: DrupalCoreDatabaseDatabaseExceptionWrapper: SQLSTATE[42S02]: Base table or view not found: 1146...

6  是否有相当于表单编辑的视图模式?  ( Is there an equivalent of view modes for form editing ) 
我有一个包含很多字段的内容类型。最终用户需要创建此类型的内容,因此我想以简化的形式提供它们,以便他们可以在不知道大多数选项的情况下创建内容项并编辑它。然后那些想要潜入复杂性的人可以有一种先进的形式,它暴露了它们。 查看模式看起来像我想要做的那种东西,所以我使用 hook_entity_info_alter 来创建自定...

1  更新字段值,无需编辑页面  ( Update field value without edit page ) 
我需要创建一个按钮,该按钮将允许用户更新节点上的字段值而不访问编辑页面。我正在使用访问控制来限制对节点的访问,以及可以定义哪个用户看到按钮的角色。我需要更新的字段是自定义选择列表。 是有模块要这样做吗?我找不到一个。谢谢! (关于我的具体实施方式更多) 我的网站允许用户列出其他用户的资源。当用户希望预订项目时,他创建...

7  使用n'subfields创建n个字段  ( Creating n fields with n subfields ) 
我想创建一个内容类型"Enterprise" ,其中用户可以定义N服务,并且对于每个服务,n任务。我已经为此内容类型创建了其他字段(名称,描述,...,简单字段),但我不知道如何从服务和任务开始。 我希望能够以相同的形式创建服务和任务。什么是最好的方法? ...

2  没有类型配置实体的实体的捆绑字段未创建  ( Bundle fields for entity without type config entity not created ) 
我的实体具有在代码中定义的捆绑包( 99887761 ),并且不使用配置实体。它还定义 DrupalCoreEntityFieldableEntityInterface::bundleFieldDefinitions 中的每个套件的字段。但是,当我安装模块时,捆绑字段不会创建,只有基本字段。 根据文档,这是可能的,...

4  有关如何在视图中包含显示处理程序中的一个选项的任何想法  ( Any idea on how to include a an option in display handler in views ) 
我想包括Pager选项下面的复选框,我以窗体改变实现。问题是如何检索或存储用户已选择的值,并在视图中使用该值 ...

0  访问引用的节点字段 - 字段级别模板  ( Access a referenced nodes fields field level templating ) 
我的内容类型,具有参考字段到另一个内容类型。这允许无限量的条目。 我为此字段创建了一个模板: field--node--field-my-fields.html.twig 我希望能够访问我引用的节点的字段。通常您可以通过访问实体来执行此操作,但我似乎无法执行此操作。 {% for item in items...

2  如何从文件字段中提取文件名和FilePath?  ( How do i extract filename and filepath from a file field ) 
这是我尝试解决的:我想允许通过默认的filefield上载内容类型上传zip文件。我正在使用hook_node_preSave拍摄zip文件,并从基于核心更新管理器的帮助函数中提取。我收到的错误是: 注意:未定义的索引:filefield_unzip_node_presave()中的文件名()(第18行) /s...

0  复杂视图/野外收集问题  ( Complex views field collection question ) 
是有没有办法在视图中执行子查询,该视图是基于现场收集中的过滤器值过滤实体,而且还通过附加到该字段收集项的另一个值? 例如,人们正在搜索属性。房地产率存储在字段集中,参考日期,价格,以及可用的。 当用户使用视图并按特定日期搜索时,我只想返回那些在该字段收集项上的date 和和可用= 1的实体。只需在视图上添加"可用" ...

2  多语种分类观点 - 实体翻译  ( Multilingual taxonomy views entity translation ) 
我正在尝试使用 Entity翻译。到目前为止,即使在使用语言代码时,我也卡住了英语视图。 我正在寻找这个需要的步骤。最简单,我正在尝试根据语言创建分类术语的块或页面。 任何建议? ...




© 2022 it.wenda123.org All Rights Reserved. 问答之家 版权所有