Symfony formlarda nasıl doğru değeri db sorgulama bir alan (yani şifre) doğrulayabilir?

0 Cevap php

Acemi bir soru.

Ben Symfony'de çok basit LoginForm sınıfı oluşturduk. Kullanıcı alanında kullanıcı adı ve parolayı ekler ve beklendiği gibi çalışmıyor eğer denetler.

// UserLoginForm :: configure()

$this->setWidgets(array(
  'username' => new sfWidgetFormInputText(),
  'password' => new sfWidgetFormInputPassword(),
));
$this->setValidators(array(
  'username' => new sfValidatorString(array('required' => true),
  'password' => new sfValidatorString(array('required' => true)
));


// Action :: executeLogin()

$this->loginForm = new UserLoginForm();

if ($request->isMethod('post')) {
    $params = $request->getParameter('login');
    $this->loginForm->bind($request->getParameter('login'));

    if ($this->loginForm->isValid()) {
        // ... more code                
    }
}

Şimdi db adı alanının varlığını kontrol etmek için çalışıyorum ve mevcut değilse, ben invalidate the form istiyorum. Parola aynı: adı + şifre çifti yoksa, ancak farklı bir mesaj ile.

Ben iki olası yollar aranır çözüm bulmak için çalışıyor:

In the action :

  • db sorgulama,
  • kullanıcı adınızı kontrol,
  • (Ben sonuçta HTML hata mesajı istiyorum) form adı alanını geçersiz,
  • Aynı kullanıcı adı + şifre kontrolü için

In this case how I can invalidate the form ? How to handle the error message in the template ?

In the form class calling the isValid() method :

  • something setValidator eklemek ()
  • YA modeli sorgulayabilir özel bir işlevi çağırmak bir post doğrulayıcı eklemek

Bu durumda nasıl Form sınıfının modeli kullanabilir?

Which is the best/fast approach ? Other possibilities ?

0 Cevap