Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 01-04-2013 18:57:20

smowgz
Nouveau membre
Date d'inscription: 28-03-2013
Messages: 2

[RESOLU]Application modulaire multi-layouts, besoin d'aide.

Bonjour,

Je suis tout nouveau parmi vous et je "débute" sous Zend. J'ai compris le principe MVC et le fonctionnement de base de Zf 1.

Voila, j'ai mis en place mon application modulaire, avec des modules : Site, et Admin. Je souhaite avoir un layout différent pour l'admin, car il faut que je face une interface d'administration et il est impératif d'avoir un autre layout que celui de la partie publique.

Voici en gros mon arborescence : 

Application
Index.php
bootstrap.php
-/Modules
--/site
---bootstrap.php
--/admin
---bootstrap.php
/layouts
-/scripts
--admin.phtml
--site.phtml

Voici mon aplication.ini :

Code:

;initialisation des modules
resources.modules[] =
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules/"
resources.frontController.defaultModule = "site"


resources.frontController.defaultControllerName = "page"
resources.frontController.defaultAction = "accueil"

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

admin.resources.layout.layout = "admin"
site.resources.layout.layout = "site"

J'aimerais avec un coup de main pour pouvoir m'aiguiller sur une fonction à initialiser ou autre, afin de charger un layout séparé pour chacun de mes deux modules.

Cela fait une semaine que je parcours internet/forums (dont celui la), mais je n'ai trouvé aucun résultat qui me convienne.

Merci de votre aide.

Dernière modification par smowgz (01-04-2013 20:14:43)

Hors ligne

 

#2 01-04-2013 20:08:00

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: [RESOLU]Application modulaire multi-layouts, besoin d'aide.

salut,
il y a la méthode setLayout() de Zend_Layout(je te renvoie dans l'api) qui permet d’initialiser un layout.Tu as 2 manières de procéder:

la 1ère est d'appeler  setlayout() dans tous les controlleurs  qui doivent utiliser un même layout.

Code:

[lang=php]
    public function init()
    {
               $this->_helper->layout->setLayout('layout');
    }

La seconde méthode est qu'au lieu de dupliquer setLayout() dans n controlleurs il faut plutot privileger un composant zend notamment un plugins qui peut agir ou est accessible dans toute l'application.

Code:

[lang=php]
//application/plugins/Theme.php
class Application_Plugin_Theme extends Zend_Controller_Plugin_Abstract {

    

    public function preDispatch(Zend_Controller_Request_Abstract $request) {
       $layout=Zend_Layout::getMvcInstance();
       if($request->getModuleName()=="nomDeTonModule"{
         $layout->setLayout('adminLayout'); // layouts/adminLayout.phtm

   }
   }

    }

}

si l'utilisation d'un plugins te pose problème regarde dans la doc.

Dernière modification par amiss (01-04-2013 20:09:54)

Hors ligne

 

#3 01-04-2013 20:14:20

smowgz
Nouveau membre
Date d'inscription: 28-03-2013
Messages: 2

Re: [RESOLU]Application modulaire multi-layouts, besoin d'aide.

C'est fabuleux ! La méthode avec la fonction init() dans chaque controller marche à merveille, je testerai la méthode par plugin un peu plus tard.

En tout cas merci de la réponse rapide.

Hors ligne

 

#4 01-04-2013 22:13:08

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [RESOLU]Application modulaire multi-layouts, besoin d'aide.

L'avantage du plugin étant de ne pas avoir à te soucier du layout lors de l'ajout d'un controller.

Tu peux aussi imaginé un plugin qui prends application.ini en compte et des lignes pour les layouts des différents modules "spécifiques" dans cette config.

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