Pregunta:
Estoy tratando de mostrar mi formulario web en un modal (incluidos los mensajes de error / validación dentro del modal). Estoy siguiendo este enfoque para un formulario drupal personalizado que no es un formulario web. Me pregunto si esto es posible con los formularios web y, en caso de que lo sea, ¿qué debo tener en cuenta para que se ejecute?
El primer problema que tengo es la siguiente línea de código del TeacherContactController.php
del ejemplo
$modal_form = $this->formBuilder->getForm('Drupal\tl_session\Form\TeacherForm');
Cuando intento usar esto en mi propio controlador, no puedo obtener el espacio de nombres apropiado + id del formulario web. Cuando reviso mi formulario web con desarrollo, dice:
[__CLASS__] => Drupal\webform\Entity\Webform
[id] => add_news_webform
Pero obtengo un error "El argumento de formulario Drupal \ webform \ Entity \ Webform \ webform-submit-add_news_webform-form no es un formulario válido". Intenté muchas cosas, pero no lo logré.
¿Cómo puedo obtener el formulario web con formBuilder y qué más me falta aquí (como la configuración de ajax específica del formulario web, etc.)?
Respuesta:
Mostrar una forma de presentación en modal (también podría llamarse ventana emergente) es mucho más simple de lo que pensaba
Supongamos que su formulario web tiene URL /contact
, entonces puede crear un enlace de la siguiente manera
<a class="use-ajax" data-dialog-type="modal" href="/contact>Contact US</a>
Al presionar ese enlace, su formulario se abrirá en un modal con validación de error y mensajes dentro del modal
NOTA: Al menos en mi caso también tuve que agregar el siguiente hook_preprocess_page
en el archivo .theme
function THEMENAME_preprocess_page(&$vars) {
//custom logic of when to include the library
// ....
$vars['#attached']['library'][] = 'core/drupal.dialog.ajax';
}
Algunas personas han informado que esto no es necesario, pero supongo que algún otro módulo incluyó esta biblioteca para ellos …