Hasta aquí todo bien con las páginas, pero pudiera darse el caso que necesitemos acceder algunos servicios que ofrece la web y que no tendría sentido adaptarlos en páginas. Por ejemplo un Web Service, o un controlador que atienda peticiones ajax, etc.
Por ello, no son sólo las páginas las que pueden llamar a los controladores de los módulos, también debemos poder acceder desde una URL a nuestros módulos.
Aquí nace un nuevo artefacto, es el selector de página:
Para ello el primer argumento de nuestra petición contendrá el string 'modulo'.
http://cms.um/modulo/noticias/votes/vote/positive/123 http://cms.um/modulo/modname/controlador/metodo/argumento/arg/s |
Vemos en la ilustración, cómo el sistema está pensado para trabajar con páginas, y se da por hecho que son las que conformarán la web.
Cuando una página se carga, lo hace en un contexto en el cual, todos los módulos que contienen ya disponen de todas las clases de Application, así, una sola instancia del sistema gestiona la carga de los módulos de la página.
Aquí vemos un extracto de código de la clase Request aplicando lo arriba dicho:
//http://cms.um/modulo/modname/controlador/metodo/arg/s if ($this->first == 'modulo') {//Cargo módulo $this->_modulo = strtolower(array_shift($url)); $this->_controlador = strtolower(array_shift($url)); $this->_metodo = strtolower(array_shift($url)); $this->_argumentos = $url; $modulo = $this->_modulo; } |