Saltar al contenido

Drupal: crea un formulario web que crea una cuenta de usuario

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:

  1. 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.
  2. Puede usarlos con facilidad para crear las páginas de perfil si así lo desea.
  3. Puede usar estos campos como filtros en la página de listado de usuarios.
  4. 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:

  1. Drupal 8: Cómo tematizar cualquier formulario.
  2. Envíe un formulario a la plantilla twig.
  3. ¿Cómo tema un formulario personalizado?
  4. 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 handlerasumimos 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:
ingrese la descripción de la imagen aquí

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *