Si encuentras alguna parte que no entiendes puedes dejarlo en los comentarios y te ayudaremos lo mas rápido que podamos.
Solución:
There is a module for that.
Forms Steps proporciona una interfaz de usuario para crear flujos de trabajo de formularios utilizando modos de formularios. Crea formularios multipasos rápidos y configurables.
¡Bienvenido a Drupal Respuestas!
Si el estilo es la única preocupación aquí, recomendaría encarecidamente no usar el formulario web en lugar del proceso de registro predeterminado de Drupal. Simplemente puede agregar más campos al usuario desde la configuración de la cuenta y hacer que se muestren durante el registro. Beneficios:
- Los datos permanecen adjuntos a la entidad del usuario incluso después del registro, lo que significa que los usuarios tendrán la posibilidad de editar los valores proporcionados durante el registro.
- Puede usarlos con facilidad para crear las páginas de perfil si así lo desea.
- Puede usar estos campos como filtros en la página de listado de usuarios.
- Muchos otros casos dependiendo del sitio.
En cuanto a la tematización del formulario, hice una búsqueda rápida y encontré algunos enlaces útiles:
- Drupal 8: Cómo tematizar cualquier formulario.
- Envíe un formulario a la plantilla twig.
- ¿Cómo tema un formulario personalizado?
- Tematización de elementos de formulario en Drupal 8.
Entonces, como mencioné en mi comentario, la forma correcta de lograr esto es usar el Handlers
funcionalidad en Webform, para eso necesitamos un módulo personalizado para nuestro Handler
aparecer en admin/structure/webform/manage/[WebformName]/handlers
Una cosa que debe asegurarse de que sea correcta es la estructura de la carpeta del módulo, de modo que el formulario web lo lea como un handler
asumimos que el nombre del módulo aquí es: webform_handler_user_creation
entonces la estructura seria algo como esto:
webform_handler_user_creation>src>Plugin>WebformHandler>UserCreationHandler.php
con un webform_handler_user_creation.info.yml
archivo en la raíz del directorio del módulo.
Con todo lo dicho, aquí hay un ejemplo del módulo en mi página de github
Entonces, lo primero que debemos hacer es asegurarnos de hacer lo nuestro después de guardar el envío del formulario web, luego cargar los valores de envío y usarlos en función de sus nombres de máquina para completar nuestra cosa de creación de usuario, aquí está el código:
getCurrentLanguage()->getId();
$user_name = $webform_submission->getElementData('user_name');
// Mandatory user creation settings
$user->enforceIsNew();
$user->setPassword('testPassword');
$user->setEmail('[email protected]');
$user->setUsername($user_name); // This username must be unique and accept only a-Z,0-9, - _ @ .
$user->set("langcode", $language);
// Optional settings
$user->set("init", 'email');
$user->set("preferred_langcode", $language);
$user->set("preferred_admin_langcode", $language);
$user->activate();
// Add a custom role in case you need one
$user->addRole('CustomRoleName');
//Save user
$user->save();
también tenga en cuenta el espacio de nombres al principio del archivo, aquí es donde se carga en el área de administración de un formulario web como la siguiente imagen:
Note que en este ejemplo usamos $user_name
como el único campo que se completa dinámicamente desde el envío del formulario web, debe reemplazar el resto de acuerdo con los nombres de las máquinas de los campos del formulario web
Aquí puedes ver las comentarios y valoraciones de los usuarios
Recuerda que puedes mostrar este enunciado si si solucionó tu problema.