我在项目中使用Zend_Auth
和Zend_Auth_Adapter_DbTable
。我想从Zend_Db_Table_Row
适配器(Zend_Auth
)获取Zend_Auth_Adapter_DbTable
实例。我还没有找到任何好的解决方案。我需要一个Zend_Db_Table_Row
实例,因为我使用自己的行类,我有一个方法从依赖表中获取数据。
我知道我可以再次获取此数据,但这没有任何意义,因为这些数据已经由Zend_Auth_Adapter_DbTable
从数据库中提取。
答案 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;
}
}