¿Cómo puede representar campos de una referencia de entidad en plantillas de nodo? [Drupal 8]

9

Para el contexto, estoy tratando con dos tipos de contenido: artículo y perfil_de_equipo. En los nodos del artículo, tenemos un campo de referencia de entidad que tira de un nodo team_profile para que sirva como información del autor.

Simplemente renderizaría la entidad con un nuevo modo de visualización, pero nuestro diseño tiene el conjunto de fotos directamente encima de la fecha y el nombre publicados, uno al lado del otro: captura de pantalla del diseño de información del autor

En D7 lo haría dpm($content)y desglosaría la información del nodo, hacer doble clic y extraer el resto de la ruta de referencia. Estoy usando Kint y soy capaz de escupir el contenido de referencia entidad a un cierto nivel, {{ kint(content.field_blog_author[0]['#node']) }}. El siguiente nivel al que quiero acceder es values, pero intentar lo siguiente me da NULL:

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

En última instancia, me gustaría representar los campos titley field_team_imagedel nodo referenciado ( visto aquí en la salida de kint ). No he encontrado información sobre esto es la documentación o mediante la búsqueda. ¿Alguien me ayudaría a despegarme?

alexbea
fuente

Respuestas:

13

#nodo en realidad está el nodo actual.

Si desea acceder a los campos y sus valores, comience con el nodo, no el contenido, que es una matriz de representación con los campos configurados.

Puede acceder a la entidad de referencia de esta manera {{ node.field_blog_author.entity }}.

Desde allí, puede continuar nuevamente al campo de la entidad referenciada que desea mostrar. Puede intentar llamar al método de vista, con lo verá con la configuración predeterminada, también puede pasarle un modo de vista como una cadena o una configuración de visualización de matriz (no estoy seguro de la sintaxis exacta para eso en twig).

Además, mi referencia estándar, consulte http://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet para obtener una excelente descripción general de las entidades de contenido, cómo están estructuradas y cómo acceder a los valores. La mayor parte de eso también se aplica a la ramita.

Y por último, cuando intente averiguar qué hay en una entidad de contenido, use node.toArray (), que le brinda una representación de matriz que está muy cerca de cómo puede acceder a ella como un objeto. Si bien la estructura interna es bastante diferente.

Berdir
fuente
Gracias Berdir. {{ kint(node.field_blog_author.entity) }}genera una buena matriz del nodo referenciado, pero ahora no puedo ir más profundo. {{ kint(node.field_blog_author.entity.title) }}, por ejemplo, rompe la página, no carga recursos ni nada más allá de la región del encabezado. Lo mismo para nidu otros. Sólo por diversión, tratando de incluir a la entidad referenciada en el contenido del nodo con {{ node.field_blog_author.entity }}devuelto un mensaje de error al parecer diciendo que el nodo no se pudo demostrar en la plantilla de esa manera.
alexbea
Parece que estos podrían ser valores protegidos . ¿Eso suena bien? Tal vez necesito crear un modo de vista solo para la foto y luego usar el modo de visualización de "etiqueta" para el nombre.
alexbea
Sí, están protegidos. Como dije, use toArray (), que también funciona en node.field_blog_author.entity.title es un objeto de campo, si desea valorar, necesita ... entity.title.value. Asegúrese de leer la hoja de trucos referenciada, explica muchas de esas cosas.
Berdir
1
Agradezco la ayuda Sin embargo, realmente no entiendo cómo usar la información en la hoja de trucos. Agregar .valuefuncionó en este caso y responde a mi pregunta original.
alexbea
@berdir la URL del sitio está en quiebra.
chalo