Struttura progetto Zend Framework con piu' moduli + Doctrine 1

Ciao ragazzi,
realizzo applicazioni con l'accoppiata ZendFramework+Doctrine1 da un po di tempo, ma ora sono alla prima esperienza con l'utilizzo di piu' moduli. Mi viene richiesto un modulo default visibile a tutti con un determinato layout e un modulo admin con un layout differente.

Fino ad ora nelle mie applicazioni ho sempre utilizzato la struttura seguente:

/app
    /application
        /acls
        /configs
        /controllers
        /forms
        /layouts
        /models --> qui risiedono i model generati da doctrine
            /generated --> qui risiedono i base model generati da doctrine
        /plugins
        /views
        /Bootstrap.php
    /data
    /doctrine
        /data
        /migrations
        /schema
            /schema.yml
        /doctrine.php
    /library
    /public
    /tests

Quindi la mia domanda e': come deve essere la struttua della mia applicazione per fare quanto richiesto?
Ho provato a utilizzare zend tool e verificare che tipo di struttura mi creava il comando

zf create module admin

dopo aver lanciato ovviamente 

zf create project app

Ho notato che il comando di creazione modulo mi ha generato una cartella 'modules' dentro 'application'.
Dentro 'modules' ha creato 'admin' e dentro quest'ultimo ha creato 'controllers', 'models' e 'views'.

Quindi zf vuol separare oltre ai controller e le view giustamente, ma anche i modelli. Ma doctrine mi crea i modelli tutti da una parte! :S
Io come faccio a utilizzare i modelli creati da doctrine per ogni modulo?

Poi come faccio ad assegnare un nuovo layout per il modulo admin?

Per la parte guest mi consigliate di lasciare la struttura che uso attualmente oppure spostare tutto dentro un modulo 'default'?

Scusate se ho fatto moltissime domande, forse anche troppo, ma sono davvero molto confuso a riguardo!

Grazie 

inviato 5 anni fa
JellyBelly
modificato 5 anni fa
X 1 X

L'organizzazione dei modelli è una convenzione dello Zend Framework che la tua applicazione non è obbligata a seguire -- tuttavia seguendo le convenzioni del framework generalmente si può risparmiare un po' configurazione (Convention Over Configuration) -- per cui puoi benissimo continuare a raccogliere i tuoi modelli all'interno della cartella application/models senza necessariamente doverli suddividere tra i vari moduli.

Questo può andar bene se i moduli che stai realizzando fanno parte dell'applicazione. Ma nel caso in cui tu voglia, ad esempio, riutilizzare moduli realizzati per altre applicazioni o da altri programmatori ti conviene dirigere l'accesso ai dati con delle API da esporre ai moduli, con cui questi possono recuperare dati e oggetti dal tuo domain model, in modo da mantenerli disaccoppiati e massimizzare le possibilità riuso.

Usare i Modelli all'Interno del Modulo

Per recuperare i tuoi modelli puoi usare un Dependency Injection Container (può andar bene anche Zend_Loader_ResourceAutoloader) o più in generale puoi semplicemente [includere e] istanziare le tue classi come faresti normalmente nel modulo di default.

Lavorare solo con il Modulo di Default

Lavorare all'interno del modulo di default non presenta particolari problemi sul lungo termine se l'applicazione non ha troppe funzionalità diverse, l'unico contro è quindi un po' d'inquinamento del namespace.

Cambiare Layout per il Modulo Admin

All'interno del bootstrap del tuo modulo (se usi Zend_Application) puoi recuperare un'istanza di Zend_Layout e impostare un layout di default diverso, dai una lettura alla pagina del manuale del componente per vedere come fare.

risposto 5 anni fa
Andrea Turso
Andrea Turso
86
Grazie infinite per i chiarimenti Andrea! Quindi da quello che mi dici se ho capito bene devo creare un file Bootstrap.php e un application.ini all'interno di ogni modulo? Non posso utilizzare quelli presenti dentro application?JellyBelly 5 anni fa
X 1 X X
Effettua l'accesso o registrati per rispondere a questa domanda