2009-04-03 21 views
0

Was ist der beste Weg/Code im Login-Formular (Zend_Form), um die Fehlermeldung 'Login/password incorrect' anzuzeigen?ZF: Login Form Validation

Ich beginne langsam zu verstehen, dass die Einstellung $ this-> setErrorMessage ('Login/password incorrect') in form/init() ist nicht genug und ich muss irgendwie Validatoren einbeziehen, um die Nachricht zu sehen, die ich gesetzt habe .

Zu welchem ​​Objekt soll ich diese Nachricht binden und muss ich Validator verwenden oder nicht? Danke!

Update:

Loginaction() Code:

$auth = Zend_Auth::getInstance(); 
$authAdapter = 
$this->_getAuthAdapter($formData['userName'],$formData['password']); 
$result = $auth->authenticate($authAdapter); 

if (!$result->isValid()) { 
    //Problem: the line below doesn't display error message 
    $form->addError('Username or password do not exist'); 
    $form->populate($formData); 
    $this->view->form = $form; 

Antwort

0

Ich denke, Sie suchen nach dem Zend_Form_Decorator_FormErrors Dekorateur. Da dieser Decorator nicht standardmäßig auf Zend_Form registriert ist, müssen Sie den Decorator manuell registrieren.

Sie haben in Ihrem Formular init() Methode, so etwas zu tun:

$this->setDisableLoadDefaultDecorators(true); 
$this->setDecorators(array(
    'FormElements', 
    array('HtmlTag', array('tag' => 'dl', 'class' => 'zend_form')), 
    'FormErrors', 
    'Form' 
)); 
0

Ich habe in der Regel nur zwei Kontrollen meine Authentifizierungsformen abzudecken.

  1. überprüfen Benutzernamen und Passwort, und wenn entweder nicht gesetzt ist, wird eine Meldung angezeigt, wie „Bitte geben Sie sowohl Benutzernamen und Passwort“

  2. Validate Anmeldeinformationen Zend_Auth verwenden und ein Fehler angezeigt, wenn sie ungültig sind: " Ungültiger Benutzername oder Passwort".

ich in einer Variablen zu der Ansicht passieren normalerweise nur die Nachricht, aber Sie könnten eine FlashMessenger nützlich finden.