web-dev-qa-db-ja.com

レンダー配列にビューを埋め込む

Drupal 7では、レンダー配列にviews_embed_viewを実装する次のコードを使用しました。

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

Drupal 8を使用してどうすればよいですか?関数はまだドキュメント化されていますが、渡した配列だけが返されます。

3
sea26.2

#markupの使用についてはわかりませんが、次のようにレンダリング可能なView配列を使用して変数を作成できます。

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

次に、twigファイルで、変数を次の宛先に送信します。

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

確かに、 #markupは文字列のみを許可しますが、ブロックタイプを使用することでできます

$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