Question

J'ai un module « admin » et je veux servir « contrôleurs dynamiques », à savoir pour fournir un comportement par défaut pour les contrôleurs qui n'existent pas vraiment ( « contrôleurs virtuels »).

Je l'ai inventé un mécanisme de messagerie léger pour une communication libre entre les modules. Je voudrais l'utiliser tel que, lorsque par exemple.

?r=admin/users/index

est demandé, il appellera le « contrôleur virtuel » « UserController » de AdminModule, qui, par défaut, utiliser ce mécanisme de messagerie pour notifier le module réel « UsersModule » il peut répondre à la demande.

Je pensais à simuler ce comportement dans AdminModule :: init (), mais à ce moment-là, je n'ai aucun moyen de décider si l'action peut être traité par un automate réel ou non, ou du moins je ne sais pas comment le faire.

Ceci est dû à la façon dont fonctionne Yii: bottom-up, le contrôleur est celui qui rend la vue et la mise en application (ou les années du module, si elle existe), par exemple. Je ne pense pas que le module a même un mot à dire au sujet de la manipulation d'un contrôleur donné + l'action ou non.

Pour résumer, je suis à la recherche d'une sorte de CWebModule :: missingController (ControllerID $, actionID $), tout comme CController :: missingAction (actionID $), ou une solution de contournement pour simuler cela.

Ce serait peut être CWebModule :: init () ou quelque part où je peux trouver

  1. si le contrôleur existe effectivement, dans ce cas, il est son travail à manipuler
  2. actionID $ et controllerID $
  3. si le module de controllerID existe de $ (je ne l'ai pas mal taper, dans r = admin / users / index, "utilisateurs" est le module réel, tel que spécifié dans la configuration de l'application).
Était-ce utile?
scroll top