Witam.

Chciałbym zdefiniować własny komunikat w przypadku gdy wartość podana w formularzu już istnieje w bazie czyli zastąpić standardowy "'An object with the same "%column%" already exist." własnym.

Mimo, że symfony nie zwracał błędów - poniższe rozwiązania nie przynosiły żądanego efektu.

Próbowałem:

  1. $this->setValidators(array('users_email' => new sfValidatorAnd(
  2. array(new sfValidatorDoctrineUnique(array('model' => 'Users', 'column' => 'users_email'), array('invalid' => 'Podany adres jest już w naszej bazie danych.')),
  3. new sfValidatorEmail(array()),
  4. ),
  5. array('halt_on_error' => true),
  6. array('required' => 'Pole jest wymagane')
  7. ) ,


lub:

  1. $this->setValidators(array('users_email' => new sfValidatorAnd(
  2. array(new sfValidatorDoctrineUnique(array('model' => 'Users', 'column' => 'users_email')),
  3. new sfValidatorEmail(array()),
  4. ),
  5. array('halt_on_error' => true),
  6. array('required' => 'Pole jest wymagane'),
  7. array('invalid' => 'Podany adres jest już w naszej bazie danych.')
  8. ) ,


lub:

  1. $this->setValidators(array('users_email' => new sfValidatorAnd(
  2. array(new sfValidatorDoctrineUnique(array('model' => 'Users', 'column' => 'users_email')),
  3. new sfValidatorEmail(array()),
  4. ),
  5. array('halt_on_error' => true),
  6. array('required' => 'Pole jest wymagane', 'invalid' => 'Podany adres jest już w naszej bazie danych.')
  7. ) ,


lub:

  1. $du = new sfValidatorDoctrineUnique(array('model' => 'Users', 'column' => 'users_email'));
  2. $du->setMessage('invalid', 'Podany adres Email już jest w naszej bazie.');
  3.  
  4. $this->setValidators(array('users_email' => new sfValidatorAnd(
  5. array($du ,
  6. new sfValidatorEmail(array()),
  7. ),
  8. array('halt_on_error' => true),
  9. array('required' => 'Pole jest wymagane', 'invalid' => 'Podany adres jest już w naszej bazie danych.')
  10. ) ,


EDIT:
Udało mi się w innym formularzu, niestety przed żądanym komunikatem pojawia się nazwa kolumny bazy danych.

Z góry dziękuję za pomoc.
Wracam na google.

Pozdrawiam.