Zend_Layout : layout diversi a seconda del modello corrente

Salve,

dopo una massiccia riorganizzazione della struttura della mia applicazione web ho iniziato ad usare zend_layout.

Il vecchio sistema che usavo era il "classico" (..per me, almeno..) :

echo $this->render('partials/html_header.phtml');

echo $content;

echo $this->render('partials/html_footer.phtml');

Con tutti i vari controller che puntavano allo stesso header/footer.

Ora però la struttura è la seguente:

/application/modules/admin/

/application/modules/default/

/application/modules/news/

Il problema che sorge è che con la vecchia struttura le view "di base" erano comuni per tutti i controller, ora, invece, la situazione è diversa e non so come definire delle viste comuni per tutti i moduli.

Quindi ho pensato di utilizzare Zend_Layout:  mi pare che sia la soluzione ottimale, ma non riesco a fare una cosa: caricare un layout diverso a seconda del modulo corrente.

La prima soluzione che ho pensato è fare uno switch prelevando il nome del modulo dalla request, ma qua sorge il problema...

Nel index.php ho la seguente situazione:

require_once 'application/library/Zend/Controller/Front.php';
Zend_Loader::registerAutoload();

$options = array(
    'layout'     => 'template',
    'layoutPath' => 'html/Templates/Template1',
    'contentKey' => 'CONTENT'
);
 
Zend_Layout::startMvc($options);
require_once 'application/BootStrap.php';
Bootstrap::run();

Tutte le varie impostazioni dell'applicativo sono caricate in BootStrap.php: ho preso questo articolo come riferimento:

http://blog.astrumfutura.com/archives/355-An-Example-Zend-Framework-Blog-Application-Part-3-A-Simple-Hello-World-Tutorial.html

Ora, come si fa a prendere il nome del modulo senza che la request sia inizializzata?

Pensavo di mettere nel bootstrap un metodo "GetCurrentLayout()"... ma in nessun modo sono riuscito a recuperare il modo del modulo con il request->getModuleName()...

Consigli?

Soluzioni?

Altri modi migliori di gestire la situazione?

saluti,

Davide

inviato 8 anni fa
Orix
Orix
1
X 0 X

Visto che stai ristrutturando l'applicazione di propongo una strada un po' impegnativa ma molto potente:

esegui il bootstrap dell'applicativo con Zend_Application e poi con Zend_Application_Resource_Modules configuri le risorse utilizzate dai singoli moduli.

La documentazione è qui:

http://framework.zend.com/manual/en/zend.application.html

in particolare:

http://framework.zend.com/manual/en/zend.application.available-resources.html#zend.application.available-resources.modules

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

..ah, mai una soluzione da 10 secondi! :-)

...proviamo, magari ci si diverte anche! :-)

grazie x l'input,

saluti,

davide

risposto 8 anni fa
Orix
Orix
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda