0

メインコントローラーがあり、HMVC を使用してこのコントローラーから子コントローラーを呼び出したいです。メインコントローラーの「Request::factory」で子コントローラーを呼び出す特定のアクションにパラメーターをルーティングするルールを設定しましたが、無限ループのために機能しませんでした。それを行う方法はありますか?

メインコントローラーが子コントローラーに情報を送信するため、HMVCを使用する必要があるため、制御レイヤーが必要です。

これは、CMS 用の crud アプリケーション用のプラグインのようなものです。

メインコントローラー: http://pastebin.com/nt2fhMEy

子コントローラーの例: http://pastebin.com/WqaHZaxf

ルート: http://pastebin.com/6JGFf2i2 (caction と cid はまだ設定していません。)

追加の注意: これは、私の CMS の一種の crud モジュールになります。メイン コントローラーは、メイン テンプレートといくつかの構成を読み込みます。また、メイン コントローラーにはいくつかの ORM 関数が含まれており、子コントローラーは parent::functionname を使用できる必要があります。子コントローラーは cruds/ ディレクトリにあり、cms によって自動的に作成されます。

4

1 に答える 1

2

コントローラーと HMVC の考え方にいくつか間違いがあります。

そのための最善の方法は、オブジェクト指向コントローラーを使用することです。これは、「子コントローラー」がメインコントローラーを拡張する必要があることを意味します。

メイン コントローラーで Controller_Template を拡張し、子コントローラーでメイン コントローラーを拡張します。

ルートを介して子コントローラーにリクエストを送信すると、親プロパティにアクセスできるだけでなく、リクエストによって次のことが行われます。

  1. メインコントローラーのbeforeメソッド
  2. 子コントローラーの before メソッド。
  3. 子コントローラーのアクション。
  4. 子コントローラーのアフターメソッド。
  5. 親コントローラーのアフターメソッド。

あなたの質問から得たものから、HMVCはまったく必要ありません。実際には、データを渡すには非常に悪いパターンです。HMVC を介して内部リクエストを実行する場合、これは実際にはまったく新しいリクエストであることに注意してください。ルートとこのリストを再度通過します。以前のリクエスト プロパティのすべてにアクセスできるわけではありません。

もう 1 つのヒント: メイン コントローラーに ORM 関数を配置しないでください。代わりに実際の ORM モデルを使用してください。

于 2012-01-06T23:01:43.630 に答える