横方向の連絡フォーム(フィードバック)をカスタムブロックまたは他のページに個別に表示してから/ contact(例:frontpage)を取得するにはどうすればよいですか?
私はこのコードを試しましたが、機能していません(連絡先フォームエンティティですか?):
// get default form
// get the entity object
$default_form = \Drupal::config('contact.settings')->get('default_form');
$entity = \Drupal::entityManager()->getStorage('contact_form')->load($default_form);
// get view builder
// render view
$view_builder = \Drupal::entityManager()->getViewBuilder('contact_form');
$full_output = $view_builder->view($entity);
お問い合わせフォームはエンティティですが、表示できません。
代わりに、contact_formをバンドルとして含むcontact_messageの追加フォームが必要です。
例としてContactController::contactSitePage()
(編集: API docs )を参照してください:
$message = \Drupal::entityTypeManager()
->getStorage('contact_message')
->create(array(
'contact_form' => $contact_form->id(),
));
// This works in a controller, use \Drupal::service('entity.form_builder') elsewhere.
$form = $this->entityFormBuilder()->getForm($message);
$form['#title'] = SafeMarkup::checkPlain($contact_form->label());
編集(@nilsunに感謝):entityTypeManagerに代わり、entityManagerは非推奨となっていることに注意してください。