2012-03-10 1 views
0

J'utilise Zend_Auth et Zend_Auth_Adapter_DbTable dans mon projet. Je veux obtenir une instance Zend_Db_Table_Row de l'adaptateur Zend_Auth (Zend_Auth_Adapter_DbTable). Je n'ai trouvé aucune bonne solution. J'ai besoin d'une instance Zend_Db_Table_Row parce que j'utilise la classe row propre dans laquelle j'ai une méthode pour obtenir des données de la table dépendante.Zend_Db_Table_Row forme d'instance Zend_Auth

Je sais que je peux obtenir ces données encore une fois mais cela n'a aucun sens parce que ces données ont déjà été extraites de la base de données par Zend_Auth_Adapter_DbTable.

Répondre

1

L'astuce est de mettre la ligne dans un récipient de Zend_Auth_Storage. En remplaçant Zend_Auth_Adapter_Interface :: authenticate(), vous pouvez le faire.

/** 
* Authenticate 
* 
* Overriding to provide more information about the authenticated user 
* 
* @return Zend_Auth_Result 
*/ 
public function authenticate() 
{ 
    $result = parent::authenticate(); 

    // Store row on success 
    if ($result->getCode() == Zend_Auth_Result::SUCCESS) { 
     return new Zend_Auth_Result(
      $result->getCode(), 
      $this->getResultRowObject(null, array('*')), 
      $result->getMessages() 
     ); 
    } else { 
     return $result; 
    } 
}