Zend_Db_Table_Row实例形式Zend_Auth

时间:2012-03-10 13:12:17

标签: php zend-framework zend-db zend-auth

我在项目中使用Zend_AuthZend_Auth_Adapter_DbTable。我想从Zend_Db_Table_Row适配器(Zend_Auth)获取Zend_Auth_Adapter_DbTable实例。我还没有找到任何好的解决方案。我需要一个Zend_Db_Table_Row实例,因为我使用自己的行类,我有一个方法从依赖表中获取数据。

我知道我可以再次获取此数据,但这没有任何意义,因为这些数据已经由Zend_Auth_Adapter_DbTable从数据库中提取。

2 个答案:

答案 0 :(得分:1)

Zend_Auth_Adapter_DbTable仅提取存储在用户表(getResultRowObject())中的字段。我觉得实例化更有利 您的Row类(或User类),其中包含Zend_Auth_Adapter_DbTable

提供的数据

点击此处查看类似问题:In Zend_Auth, can I get a domain-model User object instead of stdClass?

答案 1 :(得分:1)

诀窍是将行放入Zend_Auth_Storage容器中。通过重写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;
    }
}