Pregunta:
Estoy intentando renderizar un formulario web dentro de un complemento de bloque. Puedo recuperar con éxito el formulario web usando el siguiente código
$webform = \Drupal::entityTypeManager()->getStorage('webform')->load('my_webform');
Sin embargo, me gustaría renderizar este formulario. He intentado usar
return $webform;
Pero recibo el error
Error fatal recuperable: el argumento 1 pasado a Drupal \ Core \ Render \ Element :: isEmpty () debe ser del tipo matriz, objeto dado
Supongo que esto se debe a que $ webform no está formateado como una matriz de renderización adecuada, pero no estoy seguro de cómo hacerlo. He estado buscando pistas dentro del código del módulo de formulario web original, pero no he podido encontrar nada.
¿Cómo renderizaría programáticamente un formulario web? ¿Y / o hay alguna forma de encontrar en el código de un módulo o entidad la forma de representar esa entidad?
Respuesta:
Me las arreglé para encontrar un método para la clase de entidad de formulario web llamado getSubmissionForm. Lo encontré en el código del módulo de formulario web en src / Entity / Webform.php
Lo invoqué así
$webform = \Drupal::entityTypeManager()->getStorage('webform')->load('my_webform');
$webform = $webform->getSubmissionForm();
return $webform;
Que devolvió el formulario web especificado renderizado.