2009-09-04 11 views
3

私はまだ別の奇妙なことがZendで起こっています。Zend_Authがストレージに書き込めません

基本的に、私は、ユーザーのドメインを作成した後、次のコードを持っている:

$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は永遠に空のままです。

これはなぜですか?どうして?

答えて

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

+0

非常に興味深いです - ありがとうございます。 – John

+1

これは1年後、私は別のプロジェクトを作っています。同じ問題が私に同じ道を導き、あなたの投稿をもう一度見つけました。これが解決策です。それはすべてを解決し、常に動作し、その実装では、特に抽象化されたときに、クリーンかつ純粋です。 – John

1

私はZend_Authに問題があり、ストレージに書き込んでいません。しかし、Ian Lewisの答えとあなたの反応を見て、それはおそらく大丈夫だと思ったが、読んでいなかった。以前私のセッションで '名前'の設定を自分の名前空間に変更しました。一度これを削除してデフォルトをもう一度使い始めると、私のZend_Authは正常に動作しました。

関連する問題