web-dev-qa-db-ja.com

D8テーマの前処理から連絡先フォームをレンダリングする

ノードビューでフォームをレンダリングしたいのですが。連絡先フォームへのエンティティ参照を作成した後、preprocess_nodeで連絡先フォームのレンダー配列を取得しようとしています。

function mysupertheme_preprocess_node(&$variables) {
  $node = $variables['node'];

  if ($node->getType() == 'mynodetype') {
    if (!empty($node->field_mynodetype_form->referencedEntities())) {
      $contact_form = $node->field_mynodetype_form->referencedEntities()[0];
      $message = \Drupal::entityManager()
      ->getStorage('contact_message')
      ->create(array(
        'contact_form' => $contact_form->id(),
      ));

      //$form = \Drupal::entityFormBuilder()->getForm($message);
    };
  }
}

前処理でentityFormBuilderを呼び出す方法がわかりません。これはこれを行う正しい方法ですか?選択した連絡先フォームをノードに表示するにはどうすればよいですか?

ありがとう

1
magiccyril

このパッチを実装すると、コードは機能します。

contact_formのビュービルダーを追加

2
4k4