Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonsoir,
J'aimerai savoir si il est possible "d'insérer des vues dans des vues". J'essaye de réaliser une pseudo interface d'administration.
Cette interface doit disposer d'une en-tête, d'un pied de page, d'un menu et enfin d'une zone qui change en fonction du module demandé.
J'ai du mal à comprendre comment je peux organiser tout ceci pour m'éviter de faire de multiple $this->render('vue.phtml') sur chacune des vues de mes modules.
En gros pour 1 module j'ai 5 insertions de vues, je me retrouve pour 5 modules avec 25 insertions de vues.
L'idéal serait d'avoir un système de gabarit je pense.
Merci d'avance.
Hors ligne
j'ai posté il y a quelque temps un article sur comment utiliser des moteurs de templates le lot j'expliquais comment faire un système de vue qui utilise une main page qui inclus son contenu au lieu de multiple pages qui incluent des header et footer.
mais depuis est sorti Zend_Layout qui est fait pour mais que je n'ai pas eu le temps d'essayer
A+JYT
http://sekaijin.ovh.org/?p=13 voir le paquage joint et le moteur appelé phtml
Hors ligne
Pour ce qui est de l'entête et du pied de page, j'ai créé 2 classes qui pourraient t'aider. Le menu va dans l'entete en général (meme s'il est sur la gauche, ça se fait en css)...
Regarde le lien ci-dessous.
Hors ligne
Tout le monde en parle et doit se pencher sur Zend_Layout, vivement que l'on ai quelque chose à se mettre sous la dent...
Hors ligne
Salut,
je patinais depuis pas mal de temps sur cette question. Je ne sais pas si j'utilise la bonne manière de faire (en attendant les layout du ZF) mais j'ai fini par découvrir un peu par hasard que c'est relative simple. Malheureusement, je n'ai trouvé ça dans aucun tuto et pas davantage dans la doc en ligne.
Le but que je poursuivais était l'ajout d'un menu pouvant être modifié dynamiquement selon la page affichée. Or je ne voulais pas pourrir mon controleur. J'ai fouillé du coté des helpers pour finalement découvrir qu'à la base, pour insérer une vue dans une autre vue, il suffit simplement de faire ceci :
... </head> <body><?php echo($this->render('menu.phtml')); ?> <div id="content"> ...
Dans la mesure où le script est trouvé par le ZF, il sera inséré. Ça, c'est la base.
Ensuite pour le rendre dynamique, je me suis tourné vers les helpers en essayant de décortiquer la doc sur le sujet.
Dans mon indexController, j'ai donc simplement ajouté ceci dans la méthode init():
<?php //..... /* Définition des répertoires où trouver les helpers. */ $racineVuesHelpers = $_SERVER['DOCUMENT_ROOT'] . $this->view->baseUrl . self::SR .'application'. self::SR .'vues'. self::SR .'aides'; /* Ajout d'un helper pour le menu (... test ...) */ $this->view->setHelperPath($racineVuesHelpers, 'modules_View_Helper'); /* Cération du menu de navigation */ $this->view->liensNav = $this->view->afficherMenu($this->_request->getActionName()); //...
Et dans mon helper, je construis le menu en fonction de l'ction en cours.
Alors je ne suis pas un gourou du ZF, loin s'en faut et les spécialistes proposeront peut-être quelque chose de plus simple, mais en attendant j'obtiens ce que je veux et mon menu s'affiche correctement. C'est basé sur ce qui est expliqué dans la doc (lien cité plus haut)
Hors ligne
Pour gérer les "layouts", j'utilise la solution de Rob Allen, c'est à dire une classe qui surcharge ViewRenderer.
Voir son blog: http://akrabat.com/2007/06/02/extending … r-layouts/
Cette solution me parait plus simple et plus légère que Zend_Layout. Cela permet d'avoir autant de "layout" que l'on veut, d'avoir un "layout" par défaut et d'en changer dans les actions quand nécessaire.
Hors ligne