2009-04-03 3 views
0

Какой способ/код в форме входа в систему (Zend_Form) для отображения сообщения об ошибке «Неверный пароль/пароль»?ZF: Форма входа в систему Проверка

Я медленно начинаю понимать, что установка $ this-> setErrorMessage ('Login/password wrong') в form/init() недостаточна, и мне нужно как-то задействовать Validators, чтобы увидеть сообщение, которое я установил ,

К какому объекту я должен привязать это сообщение и должен ли я использовать валидатор или нет? Спасибо!

Update:

LoginAction (код):

$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; 

ответ

0

Я думаю, что вы ищете декоратор Zend_Form_Decorator_FormErrors. Поскольку этот декоратор не зарегистрирован по умолчанию на Zend_Form, вам необходимо зарегистрировать декоратор вручную.

Вы должны сделать что-то подобное в init() методе вашей формы:

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

Я обычно есть только две проверки, чтобы покрыть мои формы аутентификации.

  1. Проверьте имя пользователя и пароль, если либо не установлен, на дисплее появится сообщение, как «Пожалуйста, введите как имя пользователя и пароль»

  2. проверки учетных данных с помощью Zend_Auth и выводится сообщение об ошибке, если они являются недопустимыми: " Неправильное имя пользователя или пароль".

Я обычно просто передать сообщение к просмотру в переменной, но вы могли бы найти FlashMessenger полезным.

Смежные вопросы