sfGuardDoctrine eklenti ve form mesajlar

3 Cevap php

Ben sfGuardDoctrine eklentisi kullanıyorum, ve ben form doğrulama mesajları özelleştirmek istiyoruz.

Bunu nasıl başarırsınız olabilir? Ben belgelerinde bir şey bulamıyorum.

Ben bulduk tek yolu / apps / frontend / lib / onaylayıcısına içine sfGuardValidatorUser.class kopyalamak için, ama ben sadece tüm onaylayıcıyı geçersiz değil, hata mesajı geçersiz kılmak için bir yol olup olmadığını bilmek istiyorum ...

3 Cevap

Ben harici kimlik doğrulaması hakkında bir yazı bulduk. Yazarın orijinal eklenti formundan devralan bir özel formu vardır oluşturur.

Ben bu hata iletileri de dahil olmak üzere her şeyi özelleştirmek için temiz bir yolu olduğunu düşünüyorum.

Link: http://blog.honnecke.us/2010/01/using-sfdoctrineguardusers-external-authentication/

Temelde, bizim özel formun app.yml adına eklemeniz gerekir:

sf_guard_plugin_signin_form: sfGuardCustomFormSignin

Sonra bizim app klasörünün lib / form dizine formu oluşturun:

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

Bitti!

Garip Ben bunu yapmak isteyen ve deftere sadece StackOverflow arıyordu.

In sfGuardUserForm.class.php

'Normal' alanlara (örneğin first_name, son_ad) için, getValidator kullanın:

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 alanlar için, mesajlar kodu değiştirilebilir:

  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");
  }

Source for the basic idea

In sfGuardFormSignin.class.php

Bu Mesaja onaylayıcısı için ben aşağıdaki kullanılan ... Burada mantığı takip etmek kolay olması için var gibi görünmüyor:

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

Ben deneme yanılma yoluyla bu yapı ile sona erdi, ama çalışıyor. (Şimdi küresel bir hata 'username' alanından sonrası validator hatayı taşımak gerekir)

Other useful resources

This post oldukça yararsızdır varsayılan symfony form hatalarını değiştirmek için varsayılan mesajları nasıl ayarlanacağını gösterir.

Bunu özelleştirmek için aradığınız mevcut doğrulama iletisi varsa, ben dört gördüm:

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

Eğer başka bir form için olduğu gibi, eklentileri / sfDoctrinGuardPlugin / lib / form / doktrin doğrudan özelleştirebilirsiniz ilk iki.

Ben rahatsız değil üçüncü / bir yolunu buldu.

Dördüncü böyle yapılabilir: http://stackoverflow.com/questions/2578397/symfony-1-4-custom-error-message-for-csrf-in-forms