Zend_Auth не может записать в хранилище

У меня с Zend происходит еще одна странная неприятная вещь.

По сути, после создания пользовательского домена у меня есть следующий код:

$this->auth = Zend_Auth::getInstance();
$this->view->user = $this->user = $this->auth->getIdentity();
$this->user->idSite = $idSite;
$this->user->urlSite = $urlSite;
$this->auth->getStorage()->write($this->user);

Что меня ЯРОСТНО раздражает, так это то, что auth-> getIdentity () сразу после этого:

[idSite] => 0
[urlSite] => 

Итак, отсюда становится еще хуже: если я ОБНОВЛЯЮ или если какой-либо из других параметров формы терпит неудачу и отправляет меня в ТАКУЮ ФОРМУ, но БЕЗ КАСАНИЯ ВЫШЕГО СКРИПТА, auth-getIdentity () правильно возвращает:

[idSite] => 2431
[urlSite] => exampledomain

Это означает, что код правильный и работает, НО если форма заполнена правильно и все складывается хорошо, я перенаправляю к следующему шагу: $ this -> _ redirect ('nextstep'), и ни idSite, ни urlSite не остаются пустыми навсегда .

Почему это? Почему?


person John    schedule 04.09.2009    source источник


Ответы (2)


У меня была такая же проблема, и я думаю, что лучше пойти по пути использования функциональности пространства имен сеанса:

$oSession = new Zend_Session_Namespace('myStorage');
$oSession->foo = "bar";
$oSession->baz = 123;

И вы можете восстановить данные:

$oSession = new Zend_Session_Namespace('myStorage');
$this->view->foo = $oSession->foo;

Здесь есть еще несколько подсказок: Zend_Auth главное сообщение которого состоит в том, что хранилище данных Zend_Auth на самом деле является просто пространством имен.

Доступ по умолчанию к этому будет аналогичен:

$oSession = new Zend_Session_Namespace('Zend_Auth');

person Ian Lewis    schedule 02.07.2010
comment
Это год спустя, и я строю другой проект. Те же проблемы привели меня по тому же пути, и я снова нашел ваш пост. Это решение. Он решает все, всегда работает, и он чист и чист в своей реализации, особенно когда он абстрагирован. - person John; 13.04.2011

У меня также были проблемы с Zend_Auth, не записывающим в хранилище. Однако, увидев ответ Яна Льюиса и ваш ответ, я понял, что он, вероятно, пишет нормально, но не читает. Ранее я изменил параметр «имя» в своем сеансе на свое собственное пространство имен. Как только я удалил это и снова начал использовать значение по умолчанию, Zend_Auth заработал нормально.

person Daniel Wood    schedule 26.06.2011