2012-03-10 1 views
0

Я использую Zend_Auth и Zend_Auth_Adapter_DbTable в моем проекте. Я хочу получить экземпляр Zend_Db_Table_Row от адаптера Zend_Auth (Zend_Auth_Adapter_DbTable). Я не нашел хорошего решения. Мне нужен экземпляр Zend_Db_Table_Row, потому что я использую собственный класс строк, в котором у меня есть метод для получения данных из зависимой таблицы.Zend_Db_Table_Row экземпляр формы Zend_Auth

Я знаю, что могу получить эти данные еще раз, но это бессмысленно, потому что эти данные уже были получены из базы данных Zend_Auth_Adapter_DbTable.

ответ

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; 
    } 
} 
1

Zend_Auth_Adapter_DbTable извлекает только те поля, которые хранятся в таблице пользователей (getResultRowObject()). Я думаю, что более целесообразным является Instancing вашего класса Row (или класс пользователя) с данными, предоставленными Zend_Auth_Adapter_DbTable

Посмотрите здесь подобный вопрос: In Zend_Auth, can I get a domain-model User object instead of stdClass?

 Смежные вопросы

  • Нет связанных вопросов^_^