Pregunta

Tengo un módulo de "admin" y yo quiero que sirven "controladores dinámicos", esto es, para proporcionar un comportamiento predeterminado para los controladores, que en realidad no existen controladores ( "virtuales").

He inventado un mecanismo de mensajería de peso ligero para la comunicación entre los módulos sueltos. Me gustaría utilizarlo de forma que cuando por ejemplo.

?r=admin/users/index

se solicita, se llamará el "controlador virtual" "UserController" de AdminModule, lo que, por defecto, utilizar este mecanismo de mensajería para notificar al módulo real "UsersModule" que puede responder a la solicitud.

I pensado simular este comportamiento en AdminModule :: init (), pero en ese momento no tengo manera de decidir si la acción puede ser procesado por un controlador real o no, o al menos no sé cómo hacerlo.

Esto es debido a la forma en que funciona Yii: de abajo a arriba, el controlador es el que hace que la vista y el diseño de la aplicación (o el módulo de, si es que existe), por ejemplo. No creo que el módulo incluso tiene una palabra que decir sobre el manejo de un controlador + acción determinada o no.

En resumen, estoy buscando una especie de CWebModule :: missingController ($ ControllerID, $ ActionID), al igual que CController :: missingAction ($ ActionID), o una solución alternativa para simular eso.

Esto posiblemente estaría en CWebModule :: init () o en algún lugar donde pueda averiguar

  1. si realmente existe el controlador, en cuyo caso es su trabajo manejarlo
  2. los $ actionID y $ ControllerID
  3. si el módulo existe $ ControllerID (I no escribió mal, en r = admin / usuarios / índice, "usuarios" es el módulo real, tal como se especifica en la configuración de la aplicación).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top