Extender entidad User.php de Sonata User Bundle

En esta ocasión voy a explicar como extender la clase de Sonata User Bundle, User.php, en Symfony2.

Esta extensión es util cuando necesitamos añadir más campos a la entidad que se encarga de los usuarios.

Por seguir con el sistema de anotaciones que utilizo en el resto de entidades, lo primero es modificar el mapeo por defecto de la entidad User.php que se realiza mediante xml.

Para ello, nos aseguramos de tener las siguientes líneas en nuestro config.yml

Ahora cambiamos el tipo de mapeo de nuestra entidad src/Application/Sonata/UserBundle/User.php que queda del siguiente modo:

y por seguir el mismo sistema de mapeo a la entidad src/Application/Sonata/UserBundle/Group.php:

El siguiente paso, es eliminar los XML que ya no estamos utilizando para el mapeo, y eliminamos la carpeta src\Application\Sonata\UserBundle\Resources\config\doctrine\ completa.

Hecho esto, vamos a extender la clase User.php.

Modificamos la entidad User.php, por ejemplo:

Como se puede ver, también he aprovechado para configurar algunas validaciones, como definir campos únicos el email y el username. Y el nuevo campo no puede estar en blanco y como mínimo debe tener 9 caracteres.

Solo nos queda crear el Admin Class para nuestra nueva entidad:

Indicamos que debe cargar este nueva Admin Class en config.yml:

Y por último modificamos el archivo security.yml: