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 7 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 7 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 7 anni fa
Orix
Orix
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda