Cómo representar mediante programación un formulario de contacto en un tema en D8

8

¿Cómo hacer que el formulario de contacto lateral (comentarios) se muestre individualmente en un bloque personalizado u otra página luego / contacto (por ejemplo, portada)?

He intentado este código, pero no funciona (¿son entidades de formularios de contacto?):

// 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);
alexej_d
fuente
INFORMACIÓN: 1) el formulario de contacto lateral predeterminado (comentarios) es una entidad (no así el formulario de inicio de sesión). 2) entityManagerestá en desuso a favor de entityTypeManager( API docs )
nilsun
Me gustaría referirme a una nueva pregunta principal D8 para ayudar con todas las subpreguntas
nilsun

Respuestas:

6

El formulario de contacto es una entidad, pero no puede verlo.

En cambio, lo que desea es agregar una forma de un mensaje de contacto con forma de contacto como paquete.

Consulte ContactController::contactSitePage()(EDITAR: documentos de API ) como ejemplo:

$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());

EDITAR (gracias @nilsun): tenga en cuenta que entityManager está en desuso a favor de entityTypeManager.

Berdir
fuente
INFORMACIÓN: entityManagerestá en desuso a favor de entityTypeManager( documentos de API ) y faltan algunos enlaces aquí en la respuesta. En la respuesta dice: Ver ContactController::contactSitePage() como ejemplo. ¿Dónde está? ¿Es una página de documentos en Drupal.org? ¿Es una función en el núcleo? ¿Cómo implementar esto en una función de preproceso ya que la pregunta era sobre .theme? Las cosas han cambiado a fines del año pasado y faltan informaciones sobre el núcleo D8 final con respecto a tales preguntas en la mayoría de las respuestas.
nilsun
Me gustaría referirme a una nueva pregunta principal D8 para ayudar con todas las subpreguntas
nilsun
Cadena :: checkPlain ahora es SafeMarkup :: checkPlain
pcambra
1
@pcambra Gracias, tenga en cuenta que cualquiera puede actualizar las respuestas, usted mismo puede arreglar algo así.
Berdir