No Drupal 7, eu frequentemente uso node_view()
para renderizar nós (usando modos de exibição) em blocos ou páginas da seguinte maneira:
$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()
foi descontinuado e substituído por um construtor de vistas, conforme explicado no registro de alterações As entidades agora são renderizadas por um construtor de vistas . As informações não são detalhadas o suficiente para que eu possa descobrir como alcançar o mesmo resultado.
Como você pode renderizar nós no Drupal 8 para que a saída possa ser usada na matriz de renderização de um bloco ou página?
$node = Node::load($nid)
?render()
na última linha?getViewBuilder($entity_type)->view
retorna uma matriz de renderização que será passada para a visualização em galho.renderRoot
ourenderPlain
, ou viadrupal_render_root($build);
A parte mais importante é parar de se render. Você pode retornar matrizes de renderização em quase todos os lugares e deve fazê-lo. Combinar cordas assim não funciona mais.
Tudo que você precisa é este:
fonte
entity_view()
será removido antes do Drupal 9.0.0. Você pode usá-lo no Drupal 8, mas se quiser escrever desde agora um código que (para essa parte) não será alterado para o Drupal 9, você pode usar o seguinte código em vez deentity_view()
.Essencialmente, esse é o código usado
entity_view()
depois que substituí a referência por outro método obsoleto que a função estava usando. De fato, a documentação paraDrupal::entityManager()
diz:Se
entity_view()
for alterado antes de ser descontinuado, você ainda poderá visitar sua página de documentação para ver o código real (e atualizado) que a função usa.fonte
Drupal::entityTypeManager()
agora queDrupal::entityManager()
está obsoleto?