ZF gestione moduli e/o plugins dinamici

Salve a tutti,

volevo porvi una domanda su come implementereste questa funzione o se avete a portata di mano qualche tutorial.

Lo scopo sarebbe quello di avere un progetto ben sviluppato e pronto all'uso, ma con la possibilità di aggiungere facilmente moduli o plugins.

I moduli sarebbero, per esempio, default, CMS e admin di default per la gestione delle pagine dinamiche e delle impostazioni in amministrazione. Fin qui tutto ok.

La cosa più complicata è che bisognerebbe far si che basti aggiungere un modulo creato da "qualcun'altro" secondo alcuni standard aggiungendo semplicemente la cartella del modulo, che le impostazioni di questo modulo vengano visualizzate nella pagina di amministrazione del modulo 'admin', i plugins e i menu del modulo caricati, l'ACL del modulo caricato, estensione delle tabelle dipendenti (per esempio della tabella users per la gestione degli utenti), ecc...

I plugins invece sarebbero quelli che modificano l'output della view e del layout, o eseguono funzioni a seconda di qualche evento (praticamente, i veri plugins di ZF).

Quindi intendo qualcosa come un CMS come wordpress per intenderci.

Ho bisogno di un progetto base per i miei lavori con amministrazione e gestione pagine dinamiche già incluse, e aggiungere semplicemente il modulo o i moduli necessari per il progetto da fare, quindi con facilità di estensione.

Quel che ho fatto io in questo momento per il progetto su cui sto lavorando, è quello di avere i moduli nella cartella application/modules. Nel bootstrap del modulo carico ACL e altro. Ho una classe ModuleConfigurator che scansiona i moduli, che hanno una cartella configs con l'xml dei menu e l'ini di impostazioni da modificare o aggiungere, quindi aggiunge al menu "pubblico" gli elementi del menu del modulo, e nel menu "amministrazione" le pagine relative appunto all'amministrazione, come le impostazioni relative al modulo. Inoltre per aggiungere tabelle dipendenti da tabelle di altri moduli, le classi delle tabelle non estendono Zend_DB_Table ma una mia classe che a sua volta estende Zend_DB_Table, con la variabile $_dependentTables dichiarata statica, e il metodo addDependentTable che aggiunge la tabella passata come parametro. Inoltre per l'amministrazione, i moduli devono avere il controller Modulo_AdminController con le funzioni di amministrazione (limitate solo per l'utente 'admin', ma qui mi sarebbe servito molto volentieri un "sottomodulo"), e il layout del modulo admin viene anche applicato ai controller "Admin" di tutti i moduli.

Che ne pensate? Io mi rendo conto che ciò che ho fatto non è molto corretto ed è una cosa un po' improvvisata in quanto non sono rimasto settimane a pensare a una struttura, ma ho cercato di arrangiarmi e, nonostante ciò, non mi basta per rendere il tutto... "semplice".

Qualcuno si è già imbattuto in qualcosa del genere? Nel caso postate le vostre idee o se avete mai letto qualche articolo COMPLETO a proposito, vi chiedo gentilmente di postarlo...

inviato 6 anni fa
tommy87it
X 0 X

Grazie mille delle dritte, si avevo già dato un'occhiata a digitalusCMS e ad un'altro CMS, ma qualcosa non mi aveva convinto, ma andrò a rivederlo perchè son sicuro che ho saltato qualcosa che mi potrebbe aiutare o almeno dare uno spunto... Inoltre il tutorial che mi hai passato, forse è stato uno dei primi che ho letto e che mi ha aiutato a velocizzare la comprensione dello ZF, ma non mi aiuta in ciò che mi serve in questo momento. Il link sulla documentazione di digitalusCMS mi ha incuriosito e mi ha convinto che ho saltato qualcosa, quindi vedrò come gli sviluppatori hanno risolto il mio problema.

risposto 6 anni fa
tommy87it
X 0 X

Io il tutto comunque lo vedo così(non mi riferisco a digitalus): i moduli sono normali moduli di una applicazione fatta normalmente con Zend Framework.

Questi moduli estendono la funzionalità del tuo  applicativo.

Tramite i plugin di Zend Framework puoi fare in modo che questi moduli interagiscano fra loro. Puoi creare dei tuoi plugin in modo che chi costruisce un nuovo modulo lo possa facilmente integrare con il resto dell'applicazione.

Ciao

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda