En Drupal 7 lo uso con frecuencia node_view()
para representar nodos (usando modos de vista) en bloques o páginas de la siguiente manera:
$nids = array(123,456,789);
$nodes = node_load_multiple($nids);
foreach ($nodes as $node) {
$node_view = node_view($node, 'teaser');
$output .= drupal_render($node_view);
}
$build['nodes']['#markup'] = $output;
return $build;
node_view()
/ entity_view()
ha sido desaprobado y reemplazado por un generador de vistas como se explica en el registro de cambios. Las entidades ahora son representadas por un generador de vistas . La información no es lo suficientemente detallada como para que yo pueda descubrir cómo lograr el mismo resultado.
¿Cómo se pueden representar nodos en Drupal 8 para que la salida se pueda utilizar en la matriz de representación de un bloque o página?
$node = Node::load($nid)
?render()
en la última línea?getViewBuilder($entity_type)->view
devuelve una matriz de renderizado que se pasará a la vista de ramita.renderRoot
orenderPlain
, a través dedrupal_render_root($build);
La parte más importante es dejar de renderizarte. Puede devolver matrices de renderizado en casi todas partes y debe hacerlo. Combinar cadenas como esas juntas ya no funciona.
Todo lo que necesitas es esto:
fuente
entity_view()
será eliminado antes de Drupal 9.0.0. Puede usarlo en Drupal 8, pero si desea escribir desde ahora un código que (para esa parte) no cambiará para Drupal 9, puede usar el siguiente código en lugar deentity_view()
.Esencialmente, ese es el código utilizado
entity_view()
, después de que reemplacé la referencia a otro método obsoleto que la función estaba usando. De hecho, la documentación deDrupal::entityManager()
dice:Si
entity_view()
se cambiará antes de quedar en desuso, aún puede visitar su página de documentación para ver el código real (y actualizado) que utiliza la función.fuente
Drupal::entityTypeManager()
ahora queDrupal::entityManager()
está en desuso?