Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-11-2010 19:35:03

younesD
Membre
Date d'inscription: 20-04-2008
Messages: 21

[Résolu][zend_application][1.10] Layout pour chaque module

bonjour ,
je suis entrain ce créer un petit blog, divisé en deux partie Site et Admin. j'ai créer deux modules site et admin , le module par defaut est site  :

Code:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

resources.frontController.defaultModule = "site"

j'ai activé Layout en utilisant l'outil en ligne de commmande  :

Code:

>zf enable layout

.
bien creé :

Code:

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

et bien fonctionnel .
mais je voudrais creer autre layout pour le module Admin . y a t-il un moyen pour ça ?
merci d'avance pour vos réponses .

Dernière modification par younesD (22-11-2010 08:51:35)

Hors ligne

 

#2 22-11-2010 08:18:18

jfvole
Membre
Date d'inscription: 20-11-2010
Messages: 69

Re: [Résolu][zend_application][1.10] Layout pour chaque module

Bonjour,

Il te faut créer un deuxième layout "layout-2" dans le répertoire ad-hoc et spécifier dans ton controller que tu souhaite utiliser ce layout-2:

Code:

$this->_helper->layout->setLayout('layout-2');

Dernière modification par jfvole (22-11-2010 08:19:47)

Hors ligne

 

#3 22-11-2010 08:51:14

younesD
Membre
Date d'inscription: 20-04-2008
Messages: 21

Re: [Résolu][zend_application][1.10] Layout pour chaque module

merci jfvole

Hors ligne

 

#4 26-11-2010 23:53:11

ferdikam
Membre
Date d'inscription: 03-05-2009
Messages: 18

Re: [Résolu][zend_application][1.10] Layout pour chaque module

ou bien tu créer un helper qui te permettra de définir un layout qui se chargera quand le module sera admin.
voici comment je procède.

Code:

class App_Controller_Plugin_Layout extends Zend_Controller_Plugin_Abstract
{
 public function  dispatchLoopStartup(Zend_Controller_Request_Abstract $request) {
        if('admin' != $request->getModuleName())
        {
            return;
        } else {
            $layout = Zend_Layout::getMvcInstance();
            $layout->setLayout('layout-2');
            $view = $layout->getView();

            $view->headTitle()->setSeparator(' - ')
                 ->headTitle('Administration');
        }
    }
}

Et dans ton bootstrap tu peux injecter le plugin dans le controller

Code:

protected function _initControllerPlugin()
{
   $fc = Zend_Controller_Front::getInstance();
   $fc->registerPlugin(new App_Controller_Plugin_Layout());
}

Cela t'évite de repeter le code jfole dans chaque controller du module admin. principe du DRY

Hors ligne

 

#5 29-12-2010 15:37:43

jfvole
Membre
Date d'inscription: 20-11-2010
Messages: 69

Re: [Résolu][zend_application][1.10] Layout pour chaque module

En testant un peu avec un nouveau projet une autre solution existe.

un layout.phtml par module (modules - MyModule - Views - Scripts - Layout.phtml).
Et on n'en déclare pas dans layouts - scripts

Le framework cherche dans layouts scripts et ensuite dans le module, ce qui permet d'avoir une version par module. ou d'avoir un layout (ou un partial) global.

Dommage que la recherche ne soit pas inverse se qui permettrais un layout global et un layout spécialisé pour les modules si besoin...

Jean François

Hors ligne

 

#6 06-01-2012 11:41:30

kyfr59
Nouveau membre
Date d'inscription: 06-01-2012
Messages: 5

Re: [Résolu][zend_application][1.10] Layout pour chaque module

Sympa ! Merci pour l'astuce.

Franck.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages