entities – ¿Cómo puedo renderizar programáticamente el campo de un nodo respetando la configuración del modo de vista?

Pregunta:

Quiero representar el campo de un nodo dentro de un bloque. Funciona así:

<?php

if ($node) {
  if (isset($node->field_body_secondary) && $field = $node->field_body_secondary->value) {
    $markup = render($field);
    $build = array(
      '#type' => 'markup',
      '#markup' => $markup,
    );
  }
}

return $build;

Pero esto no es 100% como si simplemente renderizara el campo normalmente, haciéndolo visible en la configuración del modo de vista.

Respuesta:

Creo que el modo de vista debería aplicarse al nodo, no al campo. Por lo tanto, debe obtener el generador de vistas y renderizar el nodo. Luego, puede elegir la matriz renderizada para el campo de la matriz de renderizado node'r. Algo así como esto:

$vb = [EntityTypeManager]->getViewBuilder('node'); // Drupal\node\NodeViewBuilder
$nodeview = $vb->view($node, $viewmode);
$fieldrenderarray = $nodeview[youfield-here];

PD: Necesitas "[EntityTypeManager]" de todos modos inyectado como servicio @ entity_type.manager. O consígalo en su Block-Plugin create () desde $ container-> get ('entity_type.manager').

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım