2014-12-04 2 views
2

У меня есть форма аутентификации, пользователь должен предоставить свое имя пользователя и пароль, а также информацию о принятии или отказе через базу данных. Я наблюдал Zend Framework 1.8 tutorial 4 zend_auth and zend_form part 3, но моя система имеет ошибку:Сообщение: Элемент должен быть указан строкой или экземпляром Zend_Form_Element

Message: Element must be specified by string or Zend_Form_Element instance

Это моя форма: login.php (применение/Опалубка/login.php)

<?php 
Class Application_Form_Login extends Zend_Form 
{ 
    public function __construct($option = null) 
    { 
     parent::__construct($option); 

     $this->setName('login'); 
     $username = new Zend_Form_Element_Text('username'); 
     $username->setLabel('User name:') 
        ->setRequired(); 
     $password = new Zend_Form_Element_Password('password'); 
     $password->setLabel('Password:') 
       -> setRequired('true'); 
     $login = new Zend_Form_Element_Submit('login'); 
     $login ->setLabel('Login'); 
     $this ->addElement(array($username,$password,$login)); 
     $this->setMethod('post'); 
     $this->setAction('/authentication/login'); 
    } 
} 

и это AuthenticationController. PHP (приложение/контроллер/AuthenticationController.php)

<?php 
class AuthenticationController extends Zend_Controller_Action 
{ 
    public function loginAction() 
    { 
     $form = new Application_Form_Login(); 
     $this->view->form = $form; 
     $authAdapter = $this->getAuthAdapter(); 
     $username='john'; 
     $password = 'pass1'; 
     $authAdapter->setIdentity($username) 
        ->setCredential($password); 
     $auth= Zend_Auth::getInstance(); 
     $result = $auth->authenticate($authAdapter); 
     if ($result->isValid()) 
     { 
      $identity = $authAdapter->getResultRowObject(); 
      $authStorage = $auth->getStorage(); 
      $authStorage->write($identity); 
      $this->_redirect('index/index'); 
     } 
     else 
     { 
      echo "invalid"; 
     } 

    } 
    private function getAuthAdapter() 
    { 
     $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter()); 
     $authAdapter->setTableName('users') 
        ->setIdentityColumn('username') 
        ->setCredentialColumn('password'); 
     return $authAdapter; 
    } 
} 

и посмотреть, как го это:

<?php 
echo $this->form; 

ответ

3

попытка добавления элементов с помощью $this->addElements(array($username,$password,$login)); в addElement (без S) метод может обрабатывать только один элемент

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