2012-03-10 4 views
0

私のプロジェクトではZend_AuthZend_Auth_Adapter_DbTableを使用しています。 Zend_Authアダプタ(Zend_Auth_Adapter_DbTable)からZend_Db_Table_Rowインスタンスを取得したいとします。私は良い解決策を見いださなかった。私はZend_Db_Table_Rowインスタンスが必要です。なぜなら私は従属テーブルからデータを取得するメソッドを持つ独自の行クラスを使用するからです。Zend_Db_Table_RowインスタンスフォームZend_Auth

このデータはもう一度取得できますが、このデータは既にZend_Auth_Adapter_DbTableによってデータベースからフェッチされているため意味がありません。

答えて

1

トリックはZend_Auth_Storageコンテナに行を入れている:私はそれがより好都合には同様の質問はこちらZend_Auth_Adapter_DbTable

ルックによって提供されたデータを あなたの行クラス(またはユーザークラス)をインスタンス化されると思います。 Zend_Auth_Adapter_Interface :: authenticate()をオーバーライドするだけで、これを行うことができます。

/** 
* 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; 
    } 
} 
関連する問題