Dans Drupal 7, j'ai utilisé le code suivant implémentant views_embed_view dans un tableau de rendu.
$view_output = views_embed_view($view_name, $display_id, $uid);
$page['profile']['bio_mobile'] = array(
'#type' => 'markup',
'#markup' => $view_output,
'#prefix' => '<div class="mobile-display">',
'#suffix' => '</div>',
);
Comment faire cela en utilisant Drupal 8? Bien que la fonction soit toujours documentée, elle ne renvoie rien de plus que le tableau que j'ai transmis.
Je ne sais pas utiliser #markup
mais je peux créer une variable avec un tableau View renduable comme ceci:
// Staff snippet.
$view = Views::getView('staff');
$view->setDisplay('user_snippet');
$view->preExecute();
$view->execute();
if (count($view->result)) {
$variables['user_snippet'] = $view->buildRenderable('user_snippet');
}
Ensuite, dans le fichier twig, j'envoie la variable à:
{% if user_snippet %}
{{ user_snippet }}
{% endif %}
En effet, #markup
n'autorise que la chaîne, mais vous pouvez en utilisant un type de bloc
$view_output = views_embed_view($view_name, $display_id, $uid);
$page['profile']['bio_mobile'] = array(
'#type' => 'block',
'content' => [
'system_main' => $view_output,
],
'#prefix' => '<div class="mobile-display">',
'#suffix' => '</div>',
);