Как я могу изменить «неверное» сообщение доктрины? - PullRequest
1 голос
/ 02 апреля 2010

Я использую Symfony с доктриной и делаю регистрационную форму. Поле электронной почты объявлено уникальным, и если я установлю его на уже существующее, я получу сообщение An object with the same "email" already exist. Я использую следующий валидатор:

$this->validatorSchema['email'] = new sfValidatorEmail(array('required' => true), array('invalid' => 'Does not seem to be a proper email'));

Как я могу изменить сообщение "уже существует"? Спасибо

1 Ответ

4 голосов
/ 02 апреля 2010

Ошибка в уникальном поле, которое вы видите, возникает после пост-проверки, поэтому вам нужно переопределить валидатор там, вы можете сделать это так в вашей форме:

$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.

...