Odpowiedź, która jest oznaczona jako teraz (14 października 2014) nie jest właściwą odpowiedzią na wszystko.
To jedyne właściwe rozwiązanie:
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
{
...
}
także trzeba zastąpić grupy walidacji formularza użytkownika:
# 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
Co mamy robić? Przekroczyliśmy tylko grupy sprawdzania poprawności, aby nie odpowiadały domyślnym sprawdzeniom FOS. Zamiast tego Twój formularz zostanie zatwierdzony tylko z grupą Default
. Opisana powyżej walidacja UniqueEntity
, która nie ma żadnej grupy, zostanie dopasowana przez grupę Default
.
Lepszym rozwiązaniem jest Tima odpowiedź – Arno
Dzięki @Arno - w momencie pisania (~ 2011), Ta odpowiedź było poprawne, ponieważ "@ORM \ AttributeOverride" nie istniało. Każdy, kto natknie się na to pytanie, powinien sprawdzić odpowiedź [@ Tim's answer] (https://stackoverflow.com/a/17059918/3765) poniżej. – leek