Не показывать имя столбца, когда валидатор возвращает ошибку - PullRequest
1 голос
/ 07 сентября 2011

У меня есть следующий код:

$this->form->setValidators(array(
    'email'   => new sfValidatorAnd(
        array(
            new sfValidatorEmail(array(), array(
                'invalid' => 'Enter a valid email address.',)),
            new sfValidatorDoctrineUnique(array(
                'model'=>'Users',
                'column'=>'email',
                ), array(
                'invalid' => 'This email is already being used.',
                )),
        ),
        array(),
        array(
                'required' => 'Required',
        )
    ),
//...

и когда электронное письмо не является уникальным, оно возвращает следующую ошибку: email: This email is already being used. Но я не хочу, чтобы email: перед сообщением.
Есть ли способ, которым я могу перестать показывать имя столбца?

Могу ли я получить помощь?

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

Это особенность sfValidatorDoctrineUnique, поэтому может потребоваться проверить уникальность более чем в одном столбце.

Вы должны переопределить метод doClean (), чтобы предотвратить эту строку (в конце):

throw new sfValidatorErrorSchema($this, array($columns[0] => $error));    

Дополнительная информация:

0 голосов
/ 19 декабря 2013

Вы можете передать параметр throw_global_error в sfValidatorDoctrineUnique, чтобы сбросить ошибку и не отображать <column>::

  new sfValidatorDoctrineUnique(
    array('throw_global_error' => true, 'column' => 'email'),
    array('invalid' => 'Custom message')
  )

Надеюсь, это полезно.

С наилучшими пожеланиями.

...