Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
Voilà j'ai découvert Zend la semaine dernière et j'ai rapidement pris goût
Pour commencer, j'ai suivi des tutoriaux :
http://www.kitpages.fr/zf_quickIntroduction.html
http://www.kitpages.fr/zf_tutorial.html
J'ai tout pigé (j'ai étudié le MVC durant cettee année (Licence Développement Intra-Internet), ça marche nickel je suis content. Avant j'implémentais le MVC (comme on peut le faire sur le web... :? ) avec un méthode maison pour mes sites.
Du coup, j'avais des urls genre :
http://www.monsite.com/index.php?page=m … ction=truc
Le truc, c'est que mon desgin se situait dans la page index.php où je faisais un include() de page=machin et dans ma page machin.php j'avais un switch($_GET[action]) qui me fait penser au $view->render() de Zend...
Mais avec les vues, y-a-til un moyen simple de mettre en place un desgin qui est tout le temps le même (sans avoir à faire un include("header.php") et un include("footer.php") dans chaque vue...
Je souhaite en fait utiliser Zend pour développer une partie admin pour site marchant (elle sera énormément paramétrable et donc réutilisable pour plusieurs sites que nous allons développer, c'est le but) et j'hésite un peu à l'utiliser car je me demande si c'est bien sage (car peut peut-être que les sites en eux mêmes ne seront pas développer avec Zend...).
Merci de vos réponses...
Hors ligne
Oui tu as plusieurs possibilités.
Pour ma part j'ai une vue de base qui me sert de pattern qui est affichée systématiquement (grâce au dispatchLoopShutdown) et dans celle-ci je fait appel à mes autres vues avec des
echo $this->render("header.phtml"), echo $this->render("login.phtml"), echo $this->render("footer.phtml"),
echp $this->render($this->pageToDisplay) ...
La seul chose à savoir c'est qu'avec ce procédé chaque bloc est filtré par render.
Donc à voir si ca te conviens, sinon tu peux toujours surcharger render pour eviter le filtrage systématique.
Y en a t'il a qui fonctionne différement ? une autre astuce, approche ?
Dernière modification par Isilgawen (29-03-2007 13:27:58)
Hors ligne
Si je ne filtre pas le header et footer, je procède comment ?
Je met un include(header) et include(footer) dans toutes mes vues? ou je fai les met dans mes xxxAction() ??
Hors ligne
Les mettre dans toutes tes actions c'est vraiment lourd, peu maintenable et pas du tout dry.
Des includes pourquoi pas, mais dans une vue générale que tu appel à chaque fois, c'est beaucoup plus dry que de repeter ton header dans toutes tes vues.
Hors ligne
Oki
(j'veux pas passer pour un noob mais dry ça a quel sens??)
Comme je l'ai dis, je commence à apprendre Zend... Alors je fais comment techniquement pour mettre une vue général que j'appelle à chaque fois? Je vois pas trop là...
Hors ligne
DRY : don't repeat yourself.
Tu as plusieurs possibilités tu peux utiliser un moteur de template type smarty (http://framework.zend.com/manual/en/zen … ripts.html), ou un plugin.
Moi j'utilise le plugin et plus particulièrment la méthode dispatchLoopShutdown http://framework.zend.com/manual/en/zen … ugins.html
Mais je pense qu'il y a d'autres possibilités, vous en pensez quoi les autres forumeux ?
Hors ligne
Isilgawen a écrit:
DRY : don't repeat yourself.
Cool. Je ne connaissais pas cet acronyme. J'aurais du RTFM avant, c'est sûrement marqué dedans .
Hors ligne
Tu peux aussi sous classer Zend_View en ajoutant les headers à inclure :
class MyView extends Zend_View { protected function _run() { include "myHeader.php"; include func_get_arg(0); include "myFooter.php"; } }
Perso je ne recommande pas cette approche... je recommande plutot le include à chaque vue... c'est bcp plus facile à lire pour un 2e développeur, ça te permet d'utiliser des headers ou footers différents suivant les pages...
Là on est assez proche de la querelle de clocher sur ce point, choisis suivant ta sensibilité
Personnellement j'utilise smarty comme Isilgawen, mais j'ajoute mes includes header et footer à la main sur chaque vue...
A+, Philippe
Hors ligne
Merci (une fois de plus)
Déjà je tiens à dire que je ne souhaite pas utiliser de template (ma raison )
Donc je vais me pencher sur le plugin...
Sinon par rapport à ça :
Moi a écrit:
Je souhaite en fait utiliser Zend pour développer une partie admin pour site marchant (elle sera énormément paramétrable et donc réutilisable pour plusieurs sites que nous allons développer, c'est le but) et j'hésite un peu à l'utiliser car je me demande si c'est bien sage (car peut peut-être que les sites en eux mêmes ne seront pas développer avec Zend...).
Je voudrais savoir selon les cas possibles s'il est judicieux d'utiliser Zend ou pas... :
- Seul ma partie admin utilise Zend.
- Mon site et ma partie admin utiliserons Zend.
En fait je me demande si je vais pas galéré avec les histoire de routage, car je compte faire une admin portable comme je l'ai dis, et je me demande si je devrais changer beaucoup de code selon que mon site utilise zend avec mvc ou pas...
Des réactions?
Hors ligne
J'utilise le zend framework pour une admin générique de boutique. Mes fronts utilisent également le Zend Framework.
Ca marche parfaitement (http://www.euromapping.com encore en cours de finalisation).
Par contre tant qu'à faire, fais le front avec le Zend Framework aussi, ça te permet d'utiliser le système de packages. C'est un des gros points forts du ZF. En plus le front d'une boutique est toujours un peu compliqué (parcours de paiement, espace client,...), tu as tout à gagner à utiliser le ZF (en plus autant utiliser la même techno partout, tu gagneras du temps )
Chez moi l'admin et le front sont des sites complètement différents (domaines différents). Ce qui est partagé, c'est le modèle et toutes les classes business.
Dans tous les cas, j'ai un routage à faire pour le front, mais c'est simple quand on a l'habitude.
A+, Philippe
Hors ligne
Oki merci bon je vais me lancer sur ce pas avec Zend alors...
Je vais me pencher sur le plugin et dispatchLoopStartup() (d'ailleurs, j'ai pas bien pigé à quoi servait preDispatch(), enfin c'est quoi la différence?)
Merci à vous pour vos réponses rapides (j'ouvrirais surement d'autres topics )
Hors ligne
Dans mon plugin, j'ai mis ça
public function dispatchLoopStartup($request) { $this->getResponse()->appendBody('<!--dispatchLoopStartup() called-->'); }
Mais je voudrais plutot avoir un truc genre include à ce niveau parce que faire un plugin avec le design du site dedans j'le sens pas trop...
Je me vois mal faire un truc genre
public function dispatchLoopStartup($request) { $this->getResponse()->appendBody(file_get_contents("php/Admin/Admin_header.php")); }
Mais peut être que je suis à coté de la plaque...
Hors ligne
Bon en fait j'ai choisi de mettre mes include dans chaque vue. Je trouve ça un poil chiant mais au moins là je comprends ce que je fais
Bon j'arrête de poster sinon ça va finir en mono-topic... xD
Hors ligne
Voila un bout de code que j'avais fait en 0.6.
Maintenant en 0.9 faut voir si on peux pas faire mieux vu qu'il y a eu pas mal de modif dans zend_view. Notement au niveau du render() qui va chercher dans le controller/action tout seul maintenant.
Faut que j'étudis ca à l'occas.
public function __construct() { Zend::loadClass('Zend_View'); $view = new Zend_View; $view->setScriptPath("../application/views/"); Zend::register('view', $view); } public function preDispatch($infosDispatch) { $this->_infos = $infosDispatch; return $infosDispatch; } public function dispatchLoopShutdown() { Zend::registry("view")->headerTpl = "header.tpl.php"; Zend::registry("view")->footerTpl = "footer.tpl.php"; Zend::registry('view')->contentPageTpl = ($this->_infos->getControllerName()?$this->_infos->getControllerName():"index")."/".($this->_infos->getActionName()?$this->_infos->getActionName():"index").".tpl.php"; echo Zend::registry('view')->render('application.tpl.php');
Dans ton dispatchLoopShutdown tu peux à ta convenance selon le controller et l'action changer ton header ou footer voir le template principal.
Et dans ton application.tpl.php tu as par exemple :
echo $this->render($this->headerTpl);
echo $this->render($this->contentPageTpl);
echo $this->render($this->footerTpl);
Dernière modification par Isilgawen (30-03-2007 09:42:57)
Hors ligne
Ah ouais pas mal. C bien pensé... Un seul truc que je trouve bizarre :
Et dans ton application.tpl.php tu as par exemple :
echo $this->render($this->headerTpl);
echo $this->render($this->contentPageTpl);
echo $this->render($this->footerTpl);
le this, il sort d'ou? car on est plus dans le même script là, non?
Hors ligne
On est dans une vue donc $this représente ton instance de Zend_view c'est comme si tu avais : Zend_registry::get("view")->render(.....);
Hors ligne
Pages: 1