La risposta che è contrassegnato come in questo momento (14 ottobre 2014) non è la risposta giusta a tutti.
Questa è l'unica soluzione giusta:
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
{
...
}
Inoltre è necessario eseguire l'override gruppi di validazione per il modulo utente:
# 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
Che cosa abbiamo fatto? Abbiamo semplicemente annullato i gruppi di convalida per non corrispondere alle convalide di default FOS. Invece il tuo modulo sarà convalidato solo con il gruppo Default
. Descritto sopra la convalida UniqueEntity
a cui nessun gruppo sarà abbinato dal gruppo Default
.
Una soluzione migliore è la Tim risposta – Arno
Grazie @Arno - al momento della scrittura (~ 2011), questa risposta era corretto poiché '@ORM \ AttributeOverride' non esisteva. Chiunque incontri questa domanda ora dovrebbe verificare [risposta di Tim] (https://stackoverflow.com/a/17059918/3765) di seguito. – leek