3

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も永久に空のままになりません。

どうしてこれなの?なんで?

4

2 に答える 2

3

同じ問題が発生しましたが、セッション名前空間機能を使用するルートを経由する方がよいと思います。

$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');

于 2010-07-02T14:07:21.787 に答える
1

また、Zend_Authがストレージに書き込まないという問題もありました。しかし、Ian Lewisの回答とあなたの回答を見た後、私はそれがおそらく大丈夫だと書いていたが、読んでいないことに気づきました。以前、セッションの「名前」設定を自分の名前空間に変更しました。これを削除してデフォルトを再び使用し始めると、Zend_Authは正常に機能しました。

于 2011-06-26T18:37:33.837 に答える