Zend_Db_Table_Row экземпляр формы Zend_Auth - PullRequest
0 голосов
/ 10 марта 2012

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

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

Ответы [ 2 ]

1 голос
/ 11 апреля 2012

Хитрость заключается в размещении строки в контейнере 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 голос
/ 10 марта 2012

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

. Поищите здесь аналогичный вопрос: Могу ли я вместо этого получить объект пользователя модели домена вместоиз stdClass?

...