1

Zend_Authを使用して、アプリケーションのユーザーを識別しています。これにより、userobjectとのセッションが作成されます。

私の質問は、このオブジェクトをすべてのコントローラーとアクションで使用できるようにする方法です。したがって、このオブジェクトからのデータが必要になるたびに、このオブジェクトをセッションから引き出す必要はありませんか?

これはbootstrap.phpまたはindex.phpで行う必要があると思いますが、すべてのコントローラーで使用できるようにする方法がわかりません。コード例をいただければ幸いです。

ありがとう!

4

1 に答える 1

2

Bootstrapindex.phpおそらく時期尚早です。ルーティングはまだ行われていないため、$userオブジェクトを注入するコントローラーはありません。

いくつかの可能性が思い浮かびます。

BaseControllerを使用する

BaseController他のすべてのコントローラーが拡張するフォームを作成します。ベースコントローラーのinit()方法で、割り当てを配置できます

$this->_user = Zend_Auth::hasIdentity() ? Zend_Auth::getIdentity() : null;

その後$this->_user、コントローラーのアクションのどこでも利用できるようになります。

しかし、多くの人がBaseControllerのアイデアを嘲笑しています。以下で説明するアクションヘルパーを使用することをお勧めします。

アクションヘルパーを使用する

上記と同じ方法で作成されたオブジェクトをメソッドが返すアクションヘルパーを作成します。次に、コントローラーで、としてアクセスできます。direct()$user$this->_helper->user

正確には、ヘルパークラスに名前を付け、配置する場所は、メソッドZend_Controller_Action_HelperBrokerを使用して設定したパスと名前空間によって異なります。addPath()

コントローラプラグインを使用する

完全を期すためにリストされています。しかし、実際には、IMOで最も優れているのは上記のアクションヘルパーです。

于 2010-12-27T04:52:15.530 に答える