「管理」モジュールがあり、「動的コントローラー」を提供したい、つまり、実際には存在しないコントローラー (「仮想コントローラー」) にデフォルトの動作を提供したい。
モジュール間の緩い通信のための軽量のメッセージング メカニズムを発明しました。私はそれをそのように使いたいです。
?r=admin/users/index
が要求されると、AdminModule の「仮想コントローラ」「UserController」が呼び出されます。デフォルトでは、このメッセージング メカニズムを使用して、要求に応答できる実際のモジュール「UsersModule」に通知します。
AdminModule::init() でこの動作をシミュレートすることを考えましたが、その時点で、アクションが実際のコントローラーで処理できるかどうかを判断する方法がないか、少なくとも方法がわかりません。
これは、Yii の動作方法によるものです。たとえば、ボトムアップのコントローラーは、ビューとアプリケーションのレイアウト (または存在する場合はモジュールのレイアウト) をレンダリングします。モジュールには、特定のコントローラー+アクションを処理するかどうかについて言う言葉さえないと思います。
要約すると、CController::missingAction($actionId) のような CWebModule::missingController($controllerId,$actionId)、またはそれをシミュレートするための回避策を探しています。
それはおそらく CWebModule::init() または私が見つけることができるどこかにあるでしょう
- コントローラーが実際に存在するかどうか。その場合、それを処理するのは彼の仕事です
- $actionID と $controllerID
- モジュール $controllerID が存在するかどうか (私は間違って入力しませんでした。r=admin/users/index で、「users」はアプリケーションの構成で指定されている実際のモジュールです)。