Ошибка в уникальном поле, которое вы видите, возникает после пост-проверки, поэтому вам нужно переопределить валидатор там, вы можете сделать это так в вашей форме:
$this->validatorSchema->setPostValidator(
new sfValidatorDoctrineUnique(
array(
'model' => 'Profile',
'column' => array('email'),
'throw_global_error' => false
),
array(
'invalid' => 'A user with that %column% already exists'
)
)
);
Если вам нужно проверить несколько полей, например, username
, хранящийся в sfGuardUser
, вы можете передать sfValidatorAnd
(который принимает один массив из нескольких валидаторов) в setPostValidator
.
Дополнительно: если вам нужно сохранить другие существующие валидаторы, стоит изучить метод mergePostValidator
.