In Drupal 7 verwende ich häufig node_view()
zum Rendern von Knoten (mit Ansichtsmodi) in Blöcken oder Seiten Folgendes:
$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()
wurde veraltet und durch einen View Builder ersetzt, wie im Änderungsdatensatz erläutert. Entitäten werden jetzt von einem View Builder gerendert . Die Informationen sind nicht detailliert genug, um herauszufinden, wie ich das gleiche Ergebnis erzielen kann.
Wie können Sie Knoten in Drupal 8 rendern, damit die Ausgabe im Render-Array eines Blocks oder einer Seite verwendet werden kann?
$node = Node::load($nid)
?render()
in der letzten Zeile verwenden?getViewBuilder($entity_type)->view
Gibt ein Render-Array zurück , das an die Zweigansicht übergeben wird.renderRoot
oderrenderPlain
oder überdrupal_render_root($build);
Das Wichtigste ist, dass Sie aufhören, sich selbst zu rendern. Sie können Render-Arrays fast überall zurückgeben, und Sie sollten es tun. Solch eine Kombination funktioniert nicht mehr.
Alles was Sie brauchen ist das:
quelle
entity_view()
wird vor Drupal 9.0.0 entfernt. Sie könnten es in Drupal 8 verwenden, aber wenn Sie jetzt Code schreiben möchten, der (für diesen Teil) für Drupal 9 nicht geändert wird, können Sie stattdessen den folgenden Code verwendenentity_view()
.Dies ist im Wesentlichen der Code, der verwendet wurde
entity_view()
, nachdem ich den Verweis auf eine andere veraltete Methode ersetzt habe, die von dieser Funktion verwendet wurde. In der Tat heißt es in der Dokumentation fürDrupal::entityManager()
:Wenn
entity_view()
Änderungen vorgenommen werden, bevor sie nicht mehr unterstützt werden, können Sie auf der Dokumentationsseite den aktuellen (und aktualisierten) Code anzeigen, den die Funktion verwendet.quelle
Drupal::entityTypeManager()
jetzt so sein, dassDrupal::entityManager()
es veraltet ist?