Плагин sfGuardDoctrine и форма сообщений - PullRequest
2 голосов
/ 21 апреля 2010

Я использую плагин sfGuardDoctrine и хочу настроить сообщения проверки формы.

Как я мог это сделать? Я ничего не могу найти в документации.

Единственный способ, который я нашел, - это скопировать sfGuardValidatorUser.class в / apps / frontend / lib / validator, но я хотел бы знать, есть ли способ просто переопределить сообщение об ошибке, а не переопределить весь валидатор .. .

Ответы [ 3 ]

3 голосов
/ 21 апреля 2010

Я нашел пост о внешней аутентификации. Там автор создает пользовательскую форму, которая наследуется от исходной формы плагина.

Я думаю, что это чистый способ настроить все, включая сообщения об ошибках.

Ссылка: http://blog.honnecke.us/2010/01/using-sfdoctrineguardusers-external-authentication/

По сути, мы должны добавить в app.yml имя нашей пользовательской формы:

sf_guard_plugin_signin_form: sfGuardCustomFormSignin

Затем мы создаем форму в каталоге lib / form нашей папки приложения:

class sfGuardCustomFormSignin extends sfGuardFormSignin
{
    public function configure(){
        parent::configure();
        // custom code here
    }
}

Готово!

2 голосов
/ 21 апреля 2010

Как ни странно, я хотел сделать это и искать StackOverflow так же, как вы отправили.

В sfGuardUserForm.class.php

Для «обычных» полей (например, first_name, last_name) используйтеgetValidator:

public function configure()
{
  parent::configure();
  ...
  // You may not need to set the field as true, depending on your sfDoctrineGuard schema
  $this->getValidator('first_name')->setOption('required', true);
  $this->getValidator('first_name')->setMessage('required', 'Please enter your first name');
}

Для полей в PostValidator сообщения можно изменить в коде:

  public function configure()
  {
    parent::configure();
    ...

    // Handle the email address error - more complicated than the rest
    $pv = $this->validatorSchema->getPostValidator()->getValidators();
    $pv[0]->setMessage('invalid', "Someone has already registered with this email address");
  }

Источник основной идеи

В sfGuardFormSignin.class.php

Кажется, здесь нелегко следовать логике ... для этого поста валидатор я использовал следующее:

 public function configure()
 {
   parent::configure();
   $this->validatorSchema->getPostValidator()->setMessage('invalid', 'Your email address or password is invalid');
 }

Я закончилс этой структурой методом проб и ошибок, но это работает.(Теперь мне нужно переместить ошибку проверки сообщения из поля 'username' в глобальную ошибку)

Другие полезные ресурсы

В этом сообщении показано, как устанавливать сообщения по умолчаниюзаменить довольно бесполезные ошибки формы Symfony по умолчанию.

0 голосов
/ 21 апреля 2010

Если вы хотите настроить только существующее проверочное сообщение, я видел четыре:

1 - failed username
2 - failed password
3 - failed username & password global error
4 - csrf attack after session timeout on form

Первые два вы можете настроить непосредственно в плагинах / sfDoctrinGuardPlugin / lib / form / doctrine, как и в любой другой форме.

Третий я не удосужился / нашел способ.

Четвертый можно сделать так: Symfony 1.4: Пользовательское сообщение об ошибке для CSRF в формах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...