En MVC es como http://www.yourdomain.com/sampleController/sampleAction/
y si llama solo /sampleController/
entonces /sampleController/indexAction/
y si solo llama/entonces /indexController/indexAction/
incendios.¿Cuál es la convención sobre la estructura de URL en el patrón MVC/HMVC/PAC?
Por supuesto que hay excepciones, pero eso es más o menos la convención.
Zend tiene algo de smilir. Lo llaman Módulos.
Básicamente son solo carpetas que contienen una lógica MVC cada una. Entonces puede llamar al . Si solo llama al /Module1/
, entonces /Module1/indexController/indexAction/
incendios. Es conveniente si tienes un gran proyecto porque puedes estructurar aún más, pero es molesto si solo tienes un pequeño proyecto.
Así que me gusta mucho la Idea de HMVC/PAC y quiero adoptarla en mi marco.
¿Entiendo correctamente que es básicamente lo mismo que Zend pero con módulos anidados ilimitados?
Entonces, por ejemplo, tengo /sub-project/sub-sub-project/controller/action/
?
Y cuál es la convención si llamo/A/B/C/D /.
¿Significa la acción D en el controlador C en el módulo A/B? O IndexAction en el Controlador D en el Módulo A/B/C?
Lets lo puso en un ejemplo:
Content
ToplistController
AdministrateAction
IndexAction
ContentController
ToplistAction
Users
Chat
RoomController
IndexAction
ahora llamo la URL /content/toplist/
.
Para la URL /users/chat/room/?room=1
, el ejemplo lo hace obvio porque solo hay una posibilidad. ¿Pero es el correcto? ¿Existe una convención para abordar de manera única la acción correcta en el controlador correcto?
Mi primera idea fue "adivinar lo menos posible".
Así que primero compruebo si la url está directamente relacionada con una acción.
Y si hay un controlador/módulo llamado igual con una acción de índice, simplemente no puede disparar si hay una coincidencia en un "nivel superior".
Si este no es el caso, veo si la url coincide directamente con un controlador y anexa IndexAction.
Si este no es el caso también busco un módulo y adivino IndexController e IndexAction y si este no es el caso, busco un módulo llamado índice.
Pero me gustaría evitar este elemento if/else y el acceso al sistema de archivos. Entonces me pregunté cómo sería la convención. ¿O hay incluso uno? ¡No pude encontrar ningún ejemplo!
¿O algo así como llamar a IndexAction si no se especifica ninguno pero no se ha hecho pero cada "url corta" debe especificarse en una lógica de enrutamiento separada?
¿O he entendido por completo el concepto de HMVC/PAC?
FYI: Incluí la etiqueta php porque estoy haciendo mi framework en php y quiero saber sobre las convenciones en php. A menudo he visto diferencias en otros lenguajes de programación.
Espero haber sido claro. Explicar cosas tan abstractas en inglés no es tan fácil para mí. Si algo no está claro, pregunte para que pueda refinar la pregunta. –
+1 interesado en hacer una pregunta no solo en publicar –