Contenido del curso
Administración
- 3

Configuración y Creación de Entidades en Symfony con Doctrine
07:05 min - 4

Relaciones de Tablas en Symfony: Categorías, Publicaciones y Comentarios
07:51 min - 5

Panel administrativo con EasyAdmin en Symfony
13:50 min - 6

Personaliza vistas en EasyAdmin con Symfony
14:39 min - 7

Traducción y Personalización de Vistas en Español para Administradores
06:12 min - 8

Datos falsos con Foundry en Symfony
07:32 min - 9

Slugs automáticos con SlugField en EasyAdmin
06:27 min - 10

Slugs únicos con validación lógica y física
08:45 min - 11

Configuración de Usuarios para Seguridad en Panel Administrativo
05:26 min - 12

Registro y login de usuarios en Symfony
08:24 min - 13

Gestión de Usuarios con CRUD en Panel Administrativo
09:06 min - 14

Configuración de Relaciones en Base de Datos con Doctrine y Symfony
11:29 min - 15

Encriptación de Contraseñas en Symfony paso a paso
07:47 min - 16

Actualizar panel admin con relaciones Symfony
Viendo ahora
Área de acceso público
- 17

Configuración de Rutas y Controladores en Symfony
12:19 min - 18

Formulario de Comentarios con Autenticación de Usuario
06:18 min - 19

Configuración de Formularios y Validaciones en Symfony
12:32 min - 20

Instalación y Configuración de Bootstrap con Symfony y Webpack
09:19 min - 21

Mejoras Visuales en Sistemas de Diseño y Administración de Bases de Datos
08:04 min
Conclusión
Actualizar panel admin con relaciones Symfony
Resumen
Cuando agregas nuevas tablas y relaciones en Symfony, tu panel administrativo necesita saber que existen. En esta guía aprenderás a configurar el panel administrativo para asociar usuarios, publicaciones y comentarios, deshabilitar acciones y personalizar la vista de registro. Es ideal para quienes ya construyeron un CRUD básico y quieren un backoffice funcional.
Por qué el panel administrativo no reconoce las nuevas relaciones
Después de modificar la entidad de usuarios y crear relaciones con publicaciones y comentarios, el panel deja de permitir crear registros porque depende de campos que aún no están declarados en los controladores CRUD.
El flujo de cambios se concentra en pocos archivos: el CRUD de comentarios, el CRUD de publicaciones, el CRUD de usuarios, la entidad User, el formulario de registro y su plantilla.
¿Qué es un CRUD Controller en EasyAdmin? Es la clase que define cómo se listan, crean, editan y eliminan los registros de una entidad dentro del panel administrativo de Symfony.
Cómo asociar campos en los CRUD de comentarios y publicaciones
El primer paso es abrir el controlador administrativo de comentarios y declarar los campos de asociación hacia publicaciones y usuarios. Copias el bloque de un campo existente y lo adaptas al nuevo.
La misma lógica aplica al CRUD de publicaciones: defines la asociación con el usuario para que el formulario de creación lo muestre como opción seleccionable.
- Campo de asociación a publicaciones en el CRUD de comentarios.
- Campo de asociación a usuarios en el CRUD de comentarios.
- Campo de asociación a usuarios en el CRUD de publicaciones.
Al intentar crear un registro aparece un error que dice que no puede convertir la clase en string. Es esperado, y se resuelve con el método mágico __toString() más adelante.
Cómo personalizar el CRUD de usuarios en Symfony
Dentro del UserCrudController puedes mejorar la búsqueda y mostrar el nombre del usuario al editar. Para eso importas la clase TextField y la agregas a la configuración de campos.
Basta con replicar el bloque del email, cambiarlo por text y etiquetarlo como nombre. Al refrescar el panel, ya verás el nombre disponible al modificar usuarios.
Cómo deshabilitar la acción de crear un usuario desde el panel
El objetivo aquí es que los usuarios solo se registren desde la ventana pública, nunca desde el backoffice. Para lograrlo importas dos clases en el controlador: Action en singular y Actions en plural.
Luego defines un método público llamado configureActions que retorna una instancia de Actions con la acción de crear deshabilitada.
Actionse usa para referirse a una acción individual.Actionsse usa para configurar el conjunto de acciones del CRUD.disable(Action::NEW)quita el botón de crear sin afectar editar ni eliminar.
Al actualizar el panel, el botón de crear nuevo usuario desaparece, pero las opciones de modificar y eliminar siguen activas.
Cómo resolver el error "cannot convert to string" con toString
Cuando un formulario intenta mostrar un objeto User como texto, Symfony necesita saber qué representación devolver. Si no la defines, lanza un error al crear o editar comentarios y publicaciones.
La solución vive dentro de la entidad User. Al final de la clase, después de las relaciones y campos, agregas el método mágico __toString() que retorna un string con el nombre del usuario.
php public function __toString(): string { return $this->nombre; }
¿Para qué sirve el método __toString en Symfony? Permite que una entidad se muestre como texto cuando se usa en formularios, plantillas o paneles administrativos, evitando errores de conversión.
Después de este cambio, los selects de usuario en publicaciones y comentarios muestran el nombre real, y el panel permite crear y editar registros sin errores.
Cómo agregar el campo nombre al formulario de registro
La ventana de registro ahora exige un nombre, así que hay que actualizar dos archivos: el formulario RegistrationFormType y su plantilla Twig.
En el formulario duplicas la línea del email, la cambias por el campo nombre y la dejas con su tipo correspondiente. Al recargar la vista, el campo aparece al final del formulario porque la plantilla dibuja cada campo en orden.
Cómo reordenar los campos en la plantilla de registro
Para que el nombre aparezca antes del email, abres la plantilla de registro y mueves la línea del nombre arriba de la del email. Es un cambio de Twig puro, sin tocar el formulario.
Una vez ordenado, puedes probar el flujo completo:
- Registrar un usuario nuevo con nombre, email y contraseña.
- Iniciar sesión con el usuario administrador.
- Verificar en el panel que el usuario recién creado aparece con su nombre.
- Asignarle el rol de administrador desde la edición.
La redirección posterior al registro y al login queda pendiente para una siguiente clase.
Qué archivos modificas para actualizar el panel administrativo
Aunque el resultado parece grande, los archivos tocados son pocos y el patrón se repite en cualquier proyecto Symfony con EasyAdmin.
- CRUD de comentarios: campos de asociación a publicaciones y usuarios.
- CRUD de publicaciones: campo de asociación a usuarios.
- CRUD de usuarios: campo nombre, búsqueda y
configureActionspara deshabilitar crear. - Entidad User: método
__toString()que retorna el nombre. - Formulario de registro: nuevo campo nombre.
- Plantilla de registro: reordenamiento de campos.
Haz estos cambios, prueba cada flujo y deja en los comentarios qué error te apareció primero al asociar entidades.