0

申し訳ありませんが、これはかなり長い質問ですが、ここでいくつかの議論をしたいと思います。

私は zend を初めて使用し、モジュールの使用を避けようとしています。これは、zend のビューの側面は非常に柔軟であり、モジュールは余分なディレクトリと混乱を追加すると思うからです。しかし、私は一つのことを疑問に思っています。私が構築しているアプリはかなり大きく、実際にはアプリにモジュールの概念があります。

モジュールを使用すると、モジュールを独自のディレクトリに配置して、ビューとコントローラーを個別に配置できるなど、物事をより整理できることを私は知っています。

ただし、モジュールディレクトリを次の形式でシミュレートすることにしました

--lang/module(実際にはコントローラー)/controller(それがアクションです)/action(それが子アクションです)/other-params/--

この種のシミュレーションをどのように進め、行うか

私が持っている最初のアイデアは、アプリケーションに別のルートを追加して、4番目のパラメーターを子アクションとして取得することです。例えば

class some_controller extends extends Zend_Controller_Action{

public function someAction{

    switch (child-action) {
        case 'child-action1':
            ....... excute some action
            break;
        case 'child-action2':
            ....... excute some action
            break;....
    }

}

そんな感じ。それは理にかなっていますか、それとも他のアプローチがあるかどうか?そして、このアプローチでは、「偽の子アクション」をリソースとして追加する方法として Zend_ACL をどのように統合するのでしょうか? ありがとうございました。

4

3 に答える 3

1

おそらく、次のようにルートを設定できます。

 /:controller/:action/:child-action

ルートの設定の詳細については、こちらを参照してください。

次に、アクションメソッドで:

 $childAction = $this->getParam('child-action');

 // convert $childAction to camelCase.

 if(method_exists($this, $childAction))
 {
      // Check ACL
      $this->$childAction();
 }

アクションを直接呼び出すことができるようになるため、Action 接尾辞を使用して子アクションに名前を付けないでください。「fooChild」のようなものでそれらを後置できますが、「fooChildAction」ではなく、「foo-child」にマップされます。

于 2009-10-06T08:17:53.300 に答える
0

これにより、モジュールのディレクトリ構造を操作するよりもはるかに複雑になっていると思います...一度設定すると、それほど複雑ではなく、クラスの論理的な分離にすぎません...

于 2009-10-06T10:49:28.627 に答える
0

ルートを追加する方が理にかなっています;)

:module/:controller/:action/ を持つ -> admin/posts/add

および :module/posts/add/:action -> admin/posts/add/concept は PostsAddController::ConceptAction(); にリンクします。

switch ステートメントよりも優れていると思います ;) しかし、これを使用して... case "sth": $this->_forward('my-action','my-controller');

于 2009-10-06T11:22:40.200 に答える