La respuesta que está marcado como en este momento (14 Oct 2014) no es la respuesta correcta en absoluto.
Ésta es la única solución correcta:
namespace XXX\UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity
* @ORM\Table(name="User_User")
* @ORM\Entity(repositoryClass="UserRepository")
* @UniqueEntity(fields="usernameCanonical", errorPath="username", message="fos_user.username.already_used")
* @ORM\AttributeOverrides({
* @ORM\AttributeOverride(name="email", [email protected]\Column(type="string", name="email", length=255, unique=false, nullable=true)),
* @ORM\AttributeOverride(name="emailCanonical", [email protected]\Column(type="string", name="email_canonical", length=255, unique=false, nullable=true))
* })
*/
class User extends BaseUser
{
...
}
También se debe redefinir los grupos de validación para su formulario de usuario:
# app/config/config.yml
...
fos_user:
profile:
form:
validation_groups: [Default] # Here you can also add your own groups if you have extra validation
registration:
form:
validation_groups: [Default] # Here you can also add your own groups if you have extra validation
¿Qué hemos hecho? Simplemente anulamos los grupos de validación para que no coincidan con las validaciones predeterminadas de FOS. En su lugar, su formulario será validado solo con el grupo Default
. La validación descrita anteriormente UniqueEntity
que no tiene ningún grupo se corresponderá con el grupo Default
.
Una mejor solución es del Tim respuesta – Arno
Gracias @Arno - en el momento de la escritura (~ 2011), esta respuesta era correcto ya que '@ORM \ AttributeOverride' no existía. Cualquiera que se encuentre con esta pregunta ahora debería verificar [@ la respuesta de Tim] (https://stackoverflow.com/a/17059918/3765) a continuación. – leek