zf2 zend invokables framework zend-framework module

zend-framework - invokables - zend orm



Módulos Zend en módulos (2)

Me pregunto si es posible crear una estructura de módulo en un módulo (o algo así)

Actualmente utilizo un módulo de administración, usando URL como esta:

public/admin/index/index

con una estructura de carpetas como esta:

applications -- modules ---- admin ------ controllers ------ views [and so on]

Me gustaría utilizar este tipo de URL:

public/admin/news/index/index public/admin/gallery/index/index

Donde las noticias y la galería son módulos

La estructura de la carpeta se vería así

applications -- modules ---- admin ------ controllers ------ views -------- scripts ---------- modules ------------ news -------------- controllers -------------- views [and so on] ------------ gallery -------------- controllers -------------- views [and so on]

es posible? Traté de agregar otro módulo en mi bootstrap:

$moduleLoader = new Zend_Application_Module_Autoloader(array( ''namespace'' => ''Module'', ''basePath'' => APPLICATION_PATH . ''/modules/admin/views/scripts/modules''));

Pero eso no funcionó. Podría crear noticias, galería y dichos módulos y cargarlos en mi diseño de administrador. Todo estaría dentro del mismo estilo y menú que el resto del administrador, pero preferiría verlo a mi manera (si es posible)

Si quiero algo completamente fuera de cuestión o tengo algún consejo, ideas, por favor avíseme.


La estructura del directorio ZF es personalizable, principalmente por:

  • opciones del controlador frontal (por ejemplo, setControllerDirectory() , addPluginPath() etc.)
  • ver opciones ( addPath() , addHelperPath()
  • cargadores automáticos, por ejemplo, _resourceLoader en el módulo bootstraps

Un Módulo es una colección de funcionalidades lógicas vinculadas (por ejemplo, una galería). Para mantener las cosas simples, debe almacenar todo el código relacionado para un módulo en su directorio (esto también incluye cualquier tarea de administración). En su adminModule tiene el código de varios otros módulos, lo que hace que ambos módulos sean difíciles de reutilizar, ya que todos dependen del AdminModule y el AdminModule depende de todos los demás módulos. Esto rompe por completo la idea de los módulos. Si ayuda a comprender, puede ver los controladores como submódulos (está mal, lo sé, pero tal vez hace que la comprensión sea más fácil).

Entonces, al principio podrías hacer algo como esto:

  • Módulo de galería
    • ImageController (viewAction, browseAction, ...)
    • AdminController (editImage, uploadImage, ...)
    • ...
  • Módulo de usuario
    • SettingsController
    • AdminController
    • ...

Pero nuevamente divide el código para una entidad sobre diferentes Controladores. Al igual que en el ImageController, usted maneja la visualización de las imágenes, pero la edición y la carga se realizan en AdminController.
Entonces (al menos así es como lo hago):

  • Módulo de galería
    • ImageController (viewAction, addAction, editAction, deleteAction, ...)
    • GalleryContoller (viewAction, addAction, editAction, deleteAction, ...)
    • ....

Esto mantiene todas las cosas juntas que lógicamente pertenecen juntas. Un controlador es responsable de todas las acciones de una entidad (como ImageController para todas las acciones relacionadas con una imagen, GalleryController para acciones relacionadas con las galerías). Esto también incluye tareas administrativas.
Si lo haces de esta manera, probablemente no haya un AdminModule real. Solo sería un tipo de navegación que vincule a las acciones administrativas de cada Módulo / Controlador.

Usted puede reescribir el zf para soportar submódulos. Esto implicaría:

  • Agregar una ruta que admita submódulos (fácil)
  • Reescribe el despachador para admitir submódulos
  • Reescribe el autocargador para los submódulos
  • Agregar varios otros directorios a Plugin-Loaders y otros

Pero esto no se hace con ningún framework de mvc que haya visto alguna vez, ya que esto generalmente implica una debilidad en el diseño (una vez más, en mi opinión) y un rendimiento general suelto (cuanto más directorios busque el autocargador, peor).