Error con roles de usuario en EasyAdminBundle

Buenas noches. Tengo en un mi aplicación dos roles(ROLE_USER/ROLE_ADMIN) almacenados en la base de datos, la tabla usuarios tiene un campo que se llama roles.

La documentación me dice que la clase de mi entidad implemente UserInterface y contenga unos métodos específicos. Según he entendido, de esta manera tendría que crear una entidad para cada tipo de usuario y en el método getRoles añadir el tipo de rol.

El método getRoles tiene que devolver un array, no un string, pero en EasyAdminBundle cuando queremos modificar un usuario nos da error porque le estamos pasando un array y necesita un string.

¿Como lo puedo solucionar? Pego algo de código.

Entidad Usuario

/**
*
* @var array
*
* @ORM\Column(name="roles")
*/
...
 
public function setRoles($roles)
{
  $this->roles = $roles;
  return $this;
}
 
public function getRoles()
{
  $roles[] = $this->roles;
  if(!$roles){
    $roles[] = 'ROLE_USER'
  }
  return $roles;
}

De esta manera puedo crear usuarios, pueden loguearse, etc ... pero desde la parte de administración no puedo modificar ningún dato de la tabla usuarios.

Gracias.

Respuestas

#1

Si no configuras los campos del formulario, el bundle EasyAdmin trata de averiguar el más adecuado. Cuando esto no es correcto o provoca errores, la solución consiste en configurar a mano el tipo de campo de formulario.

En esta sección de la documentación se explica con detalle, pero básicamente tendrías que hacer lo siguiente:

easy_admin:
    entities:
        User:
            class: AppBundle\Entity\User
            form:
                fields:
                    - 'id'
                    - { property: 'roles', type: 'text' }
#2

Muchas gracias por responder tan pronto. Probé configurándolo así y sigue dando el mismo error, lo pego por si ayuda de algo.

An exception has been thrown during the rendering of a template ("Notice: Array to string conversion") in form_div_layout.html.twig at line 13.

#3

Ahora mismo estoy muy liado, pero a partir del miércoles me libero un poco y voy a mirar con detalle este error para ver si se trata de un error en el bundle (lo cual es probalbe) o si es algo que se puede solucionar con configuración.

#4

Buenas tardes. ¿Pudiste mirar el error? No consigo solucionarlo.

#5

Añade la función __toString() en tu entidad y listo!