web-dev-qa-db-fra.com

Incorporer une vue dans un tableau de rendu

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.

3
sea26.2

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 %}
2
Kevin

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>',
);
3
No Sssweat