Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Comment faites-vous pour mettre en place des subtemplates? Quelle est la méthode la plus "clean" pour vous?
Merci d'avance pour toute proposition!
Farf
Dernière modification par farf (12-08-2009 11:07:52)
Hors ligne
Je ne dois pas être assez clair ou peut-être n'avez vous jamais eu cette question? (cela m'étonnerait!).
Par exemple, vous avez un layout général qui gère le footer, le header et le menu. Vous avez après une partie du site avec deux colonnes, la colonne de gauche étant la même pour de nombreuses actions.
vous n'aller par faire un partial dans chaque vue?
Le système idéal serait le même que celui du layout mais pour un sub layout...
Est-ce plus clair?
Comment faites-vous?
Merci d'avance pour toute piste!
Yvan
Hors ligne
J'ai bien compris ton soucis, et je serais également intéressé par une solution à ton problème ...
Hors ligne
Je ne comprends pas pourquoi il n'y a pas plus de réponses... Soit il y a une solution évidente, soit de nombreuses personnes ont déjà dues résoudre ce problème.... ou au moins en parler.
Peut-être les experts Zend Framework peuvent nous rediriger vers d'autres posts?
Merci d'avance.
Farf
Hors ligne
Bonjour,
Je suppose que tu te trouve dans une architecture MVC ?
Dans ce cas il faut créer une vue disponible dans tous tes controllers afin de la passer au layout. Pour cela je j'étendrais la classe Zend_Controller_Action afin d'y mettre quelque chose comme ça :
public function init() { $colone= new Zend_View(); $this->view->colone = $colone; } ... // Dans ton layout tu peux faire le rendu <?=$this->colone->render('path/de/ma/vue')?>
Ce n'est qu'une suggestion, je suis loin d'être un spécialiste en la matière
Cordialement,
Julien
Dernière modification par EffigieCreations (19-08-2009 09:42:54)
Hors ligne
[EDIT] http://www.z-f.fr/forum/viewtopic.php?id=1419 : je vais potasser ça. Désolé de ne pas l'avoir vu plus tôt mais n'hésitez pas à donner vos méthodes
Merci pour ta réponse.
EffigieCreations a écrit:
Je suppose que tu te trouve dans une architecture MVC ?
Oui
Je ne suis pas bien sur de bien comprendre ta solution.
En quoi cela résoud le problème? L'objectif est de créer un sublayout. Où est-il dans ton code?
Désolé, je ne vois pas bien.
De plus, tu donnes à ta vue une autre vue sans aucune information. Faire $this->render('path/de/ma/vue') dans le layout serait équivalent non?
Si tu peux préciser un peu ta solution, je suis preneur!
Sinon personne n'a une solution en étendant la classe Layout?
Merci!
Farf
Dernière modification par farf (21-08-2009 10:45:48)
Hors ligne
Bonjour Farf,
Désolé pour la réponse tardive !
$this->render('path/de/ma/vue') // Dans le layout
Je n'avais pas pensé à ça effectivement ! Si ton problème est d'insérer du code HTML selon le controller tu peux utiliser cette instruction dans ton layout non ?
Cordialement,
Julien
Hors ligne
Le but est d'avoir le même fonctionnement que le layout:
Du côté de l'action de et la vue de l'action: ils ne savent pas qu'ils seront inclus dans un sublayout.(comme aujourd'hui ils ne savent qu'il sont dans un sublayout.
Du côté du layout général: il ne "sait" pas qu'il y aura un sublayout. D'"ailleurs, certaines actions/controlleurs pourront ne pas utiliser de sublayout.
Et le top serait d'avoir un système en cascade infini.
Je souhaiterai juste avoir à mettre un initSubLayout(path/sublayout) dans l'init de mon controller ou dans un plugin.
Cela me paraîtraît être une facon propre d'utiliser un sublayout.
Je n'ai pas eu le temps de creuser. Je vous tiens au courant dès que j'arrive à quelque chose.
Si vous avez des idées, n'hésitez pas!
Farf
Hors ligne