Contenido del curso
Base de datos
Consultas a tablas
Sistema de inicio de sesión
Gestión de base de datos
Formulario de registro con roles en Symfony
Resumen
Crear un formulario de registro en Symfony se reduce a un comando, unas cuantas preguntas guiadas y pequeños ajustes en el controlador. Si estás aprendiendo este framework PHP, aquí verás cómo levantar el flujo de alta de usuarios con roles diferenciados, sin imponer diseño y dejando libertad total para personalizar.
¿Qué hace el comando make:registration-form en Symfony?
El primer paso es ejecutar bin/console make:registration-form, el generador oficial que arma controlador, formulario y plantilla en segundos. Si te falta alguna dependencia, Symfony mismo te avisa y te entrega el comando para instalar el componente de formulario y el de validación.
Después de instalar, vuelves a correr el comando y el asistente te lanza varias preguntas clave:
- Validar que el identificador del usuario sea único, para evitar cuentas duplicadas.
- Activar el envío de email de verificación, opcional según tu proyecto.
- Autenticar automáticamente al usuario tras registrarse.
- Definir la ruta de redirección posterior al registro, en este caso la vista home.
- Generar archivos de PHPUnit, que puedes omitir si no estás trabajando pruebas.
¿Qué genera el comando make:registration-form? Crea un controlador, un form type, una plantilla Twig y archivos de configuración. Puedes verificarlo con
git statusantes de modificar nada.
¿Cómo agregar el campo nombre al formulario de registro?
El formulario funciona desde el primer momento, pero llega sin diseño y sin todos los campos de tu entidad. Si tu tabla de usuarios incluye el campo name, debes añadirlo manualmente al form type con ->add('name'). Aquí entra en juego la filosofía de Symfony: te entrega la funcionalidad, pero no impone diseño ni clases CSS, así tú decides el estilo.
¿Por qué editar la plantilla Twig además del form type?
Al agregar el campo en el form type, este aparece al final del formulario por defecto. Para controlar el orden visual (nombre, correo, contraseña, términos y botón de registrar), abres la plantilla Twig generada y declaras manualmente cada form_row.
Ahí también defines la etiqueta visible. En el ejemplo, el campo name lleva el label Full name, lo que demuestra que la propiedad interna y el texto que ve el usuario son cosas distintas.
¿Cómo asignar roles de usuario al registrarse en Symfony?
El controlador generado ya hashea la contraseña antes de guardar al usuario. Pero si tu sistema maneja rol administrativo y rol de usuario, necesitas añadir una línea con setRole() antes de persistir la entidad.
La lógica es simple: cualquier persona que se registre desde el formulario público se crea con el rol de usuario común. El rol administrativo se asigna por otra vía, normalmente desde fixtures o seeders para ambientes de prueba.
¿Dónde defino el rol por defecto al registrar? Dentro del método del controlador que procesa el formulario, justo después de crear la entidad y antes de llamar a
entityManager->persist(). Ahí ejecutas$user->setRole('usuario').
¿Cómo cargar datos de prueba con doctrine fixtures?
Para probar el sistema con datos realistas, ajustas el factory de fixtures para que genere usuarios con el rol de usuario y al menos uno con rol administrativo. Luego ejecutas:
bash bin/console doctrine:fixtures:load
Confirmas con yes y la base de datos queda refrescada con los nuevos registros. Esto te permite validar de inmediato que el sistema diferencia ambos roles al iniciar sesión.
¿Qué libertades te da Symfony al generar formularios?
La decisión de diseño es 100% tuya. Symfony no te obliga a usar Bootstrap, Tailwind ni ninguna librería CSS específica. El HTML generado es plano y funcional, listo para que tú apliques el sistema visual de tu proyecto.
Esta filosofía tiene una ventaja clara: el código generado es código que deberías leer. Revisarlo te enseña cómo Symfony estructura controladores, cómo maneja formularios tipados y cómo se integra con el sistema de seguridad.
Tu reto ahora es visitar la ruta de registro, crear un nuevo usuario y mejorar el diseño del formulario con el framework CSS que prefieras. Comparte tu resultado en los comentarios y muestra cómo lo personalizaste.