2011-12-08 1 views
3

私は私はこのような(init関数内)ビューにユーザーオブジェクトを保存するコントローラのアクションヘルパー持っている:私はそうコントローラプラグインのをpreDispatch方法でオブジェクトにアクセスしたいと思いますプラグインでビューオブジェクトを取得する方法は?

Zend_Layout::getMvcInstance()->getView()->user = $user; 

を私はデータベース内のユーザーを調べる必要はありません。私はこのようにしてみました:

$user = Zend_Layout::getMvcInstance()->getView()->user; 

しかし、それはnullオブジェクトを返しています。私はこれを間違ってやっているし、ログインロジックの中にキャッチ22をプログラムしたからではないと思っています。オブジェクトにアクセスする別の方法がありますか?

答えて

5

私はあなたのアクションヘルパーに以下の方法を入れることはあなたを助けるかもしれないと思います。あなたのヘルパーが登録されると

private $user 

public function init() 
{ 
    $this->user = new user(); 
} 

public function preDispatch() 
{ 
    $user = $this->user; 
    //Do whatever you wish with the user object. 
    // although you probably don't need to do anything. 
} 

public function direct() 
{ 
    Zend_Layout::getMvcInstance()->getView()->user = $this->user; 
    //alternatively just return the user object or whatever you want to do 
} 

次に、あなたは、単にビューにユーザーオブジェクトを置くために、あなたのコントローラで$this->_helper->helperName()を行うことができます。

Mathew WeirO'Phineyはdevzoneにgood explanation of action helpersを持っています。特にdirect()方法の目的。

-1

はい、よい方法は、現在ログインしているユーザーのシングルトンクラスを作成することです。このような場合、プラグイン、ビュー、フォームなど、どこにでもアクセスできます。

関連する問題