Dans Drupal 7, j'utilise fréquemment node_view()
pour le rendu des nœuds (en utilisant les modes d'affichage) dans des blocs ou des pages comme suit:
$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()
a été déconseillé et remplacé par un générateur de vues, comme expliqué dans l'enregistrement de modification Les entités sont désormais rendues par un générateur de vues . Les informations ne sont pas suffisamment détaillées pour que je puisse comprendre comment obtenir le même résultat.
Comment pouvez-vous rendre les nœuds dans Drupal 8 afin que la sortie puisse être utilisée dans le tableau de rendu d'un bloc ou d'une page?
$node = Node::load($nid)
?render()
dans la dernière ligne?getViewBuilder($entity_type)->view
renvoie un tableau de rendu qui sera transmis à la vue des rameaux.renderRoot
ourenderPlain
, ou viadrupal_render_root($build);
La partie la plus importante est d'arrêter de vous rendre. Vous pouvez renvoyer des tableaux de rendu presque partout et vous devez le faire. Combiner des chaînes comme ça ensemble ne fonctionne plus.
Tout ce dont vous avez besoin est le suivant:
la source
entity_view()
sera supprimé avant Drupal 9.0.0. Vous pouvez l'utiliser dans Drupal 8, mais si vous voulez écrire depuis maintenant du code qui (pour cette partie) ne changera pas pour Drupal 9, vous pouvez utiliser le code suivant à la place deentity_view()
.Essentiellement, c'est le code utilisé à partir du moment où
entity_view()
j'ai remplacé la référence à une autre méthode obsolète que la fonction utilisait. En fait, la documentation deDrupal::entityManager()
dit:Si
entity_view()
sera modifié avant d'être obsolète, vous pouvez toujours visiter sa page de documentation pour voir le code réel (et mis à jour) que la fonction utilise.la source
Drupal::entityTypeManager()
maintenantDrupal::entityManager()
obsolète?