it-swarm.com.de

Betten Sie eine Ansicht in ein Render-Array ein

In Drupal 7) habe ich den folgenden Code verwendet, der views_embed_view in einem Render-Array implementiert.

  $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>',
  );

Wie mache ich das mit Drupal 8? Obwohl die Funktion noch dokumentiert ist, gibt sie nur das Array zurück, das ich übergeben habe.

3
sea26.2

Ich weiß nicht, wie man #markup Verwendet, aber ich kann eine Variable mit einem renderbaren View-Array wie folgt erstellen:

  // 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');
  }

Dann sende ich in der Datei twig) die Variable an:

{% if user_snippet %}
  {{ user_snippet }}
{% endif %}
2
Kevin

Tatsächlich, #markup erlaubt nur Zeichenfolgen, aber Sie können einen Blocktyp verwenden

$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