Skip to content
Advertisement

Zend framework ‘Method “init” does not exist

    public function loginAction(){

         if($_POST){
            $data = $this->getRequest()->getPost();
            $adapter = $this->Authorization($data);
            $auth    = Zend_Auth::getInstance();
            $result  = $auth->authenticate($adapter);

         }


     }

When I submit POST I get Fatal error:

*Fatal error: Uncaught exception 'Zend_Controller_Action_Exception' with message
 'Method "init" does not exist and was not trapped in __call()' in
 /home/pigusaku/domains/xxx.lt/public_html/my/library/Zend/Controller/Action.php:486


Stack trace: 

#0 /home/pigusaku/domains/xxx.lt/public_html/my/library/Zend/Controller/Action.php(133): Zend_Controller_Action->__call('init', Array) 
#1 /home/pigusaku/domains/xxx.lt/public_html/my/library/Zend/Controller/Action.php(133): ErrorController->init() 
#2 /home/pigusaku/domains/xxx.lt/public_html/my/library/Zend/Controller/Dispatcher/Standard.php(281): Zend_Controller_Action->__construct(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http), Array) 
#3 /home/pigusaku/domains/xxx.lt/public_html/my/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) 
#4 /home/pigusaku/domains/xxx.lt/public_html/my/library/Zend/Application/Boot in /home/pigusaku/domains/xxx.lt/public_html/my/library/Zend/Controller/Plugin/Broker.php on line 336*

I try to disable layout with:

$this->_helper->layout()->disableLayout();

But also get same Fatal error.

I get an error in this line :

$result  = $auth->authenticate($adapter);

Where can be problem in my aplication ?

Advertisement

Answer

I think the error comes from the adapter you’re using. If you’re athenticating the user via a database table, I suggest you to use this code insatead :

public function loginAction(){

     if($_POST){
        $data = $this->getRequest()->getPost();
        $username = $data['username']; //<----get here the username field
        $password = $data['password']; //<----get here the password field
        $authAdapter = new Zend_Auth_Adapter_DbTable(
          Zend_Db_Table::getDefaultAdapter(),
          'users', //users table name, or by setTableName('users')
          'username', // the username column, or by setIdentityColumn('username') 
          'password' // password column, or by setCredentialColumn('password')
        );
     $authAdapter->setIdentity($username)
                 ->setCredential($password);
     $auth    = Zend_Auth::getInstance();
     $result  = $auth->authenticate($authAdapter);

     }
}

You could also see this post or you may refer to the Database Table Authentication doc.

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement