1

Zend Frameworkの使い方を学ぼうとしていますが、問題が発生しました。現在のユーザー名をアプリケーションのヘッダー(すべてのページに表示)、具体的には/layouts/scripts/default.phtmlに配置しようとしています。

MVCアーキテクチャは私にとって非常に新しく、非常に混乱しています。毎回このユーザー名をコントローラーに表示するロジックを配置する必要はありません(これはおそらく間違った方法です)。したがって、各コントローラーにない場合、この変数を割り当てるコードをどこに配置しますか?

乾杯

4

3 に答える 3

2

これは、アクションヘルパーが設計された種類のものです。それらに関する完全なチュートリアルはSOの範囲を少し超えていますが、いくつかの優れたチュートリアルが利用可能です。

Zend Frameworkのドキュメントから始めて、MathewWeierO'PhinneyのチュートリアルRobAllenによるチュートリアルを見てください。

この種の目的でベースコントローラーを使用する場合の問題は、コントローラーがリソースを必要とするかどうかに関係なくリソースが読み込まれるのに対し、アクションヘルパーは必要な場合にのみ読み込まれることです。

優れたZendCastsがアクションヘルパーに関するビデオを持っていることをほとんど忘れていました。

于 2012-03-12T18:28:49.143 に答える
1

preDispatchベースコントローラーが必要で、それをメソッドで割り当てます。

class MyApp_Controller_Action extends Zend_Controller_Action {
    public function preDispatch() {
        parent::preDispatch();
        Zend_Layout::getMvcInstance()->assign('username', getCurrentUserName());
    }
}

次に、その新しいクラスで独自のコントローラーを拡張します。

class MyApp_Module_ActionController extends MyApp_Controller_Action {

}

次に、レイアウトビューで:

echo $this->layout()->username;
于 2012-03-12T18:23:42.343 に答える
0

まず、マニュアルを読んでから、次のようなことを実行してみてください。

class BaseController extends Zend_Controller_Action {

    public function preDispatch() {
        // your logic to show the user name goes here
    }

}

class SomePageController extends BaseController {}

class SomeOtherPageController extends BaseController {}

これで問題が解決する可能性があります。

于 2012-03-12T18:24:14.940 に答える