Ziki Twitter LinkedIn FaceBook Accueil Dator Blog développement & life Ajax, Blog, Collaboration, CSS2, Découverte, Electro, Framework, Fun, Gadget, Hébergement, Javascript, PHP, Playlist, Référencement, Site Web, Vidéos, Web 2.0, Webdesign, xhtml Tutorial : Créer une application avec le Zend Framework #4 Explications sur les contrôleurs et sur le Routing 20 juil Par Clément dans Tutoriels Mots-clefs :Controller, Routing, Ruby, Ruby on Rails, Watchmydesk, Zend, Zend Framework, Zend_Controller_Action, Zend_Controller_Router Acronis True Image 2011 Logiciel backup pour particuliers. Dernière version est disponible! www.acronis.fr 1 of 11 12/08/2010 11:14 AM
Dans cet épisode, nous allons voir les conventions de nommage des contrôleurs et leur utilisation au sein du Zend Framework. Nous allons ensuite nous attaquer au routing, ce concept qui permet de dirigé notre application à partir de simple commande en PHP. Plan de l épisode #3 1. 2. 3. 4. 5. 6. Explications et conventions sur les contrôleurs. Conventions des contrôleurs. Les contrôleurs et les aide d action (Action Helpers). Explication sur le Routing avec le Zend Framework. Conclusion. Notes. Explications et conventions sur les contrôleurs Un contrôleur est celui qui reçoit les évènements utilisateur de la vue et ordonne les éventuelles modifications au modèle. C est aussi celui qui va chercher les résultats à partir des modèles. Avec le Zend Framework, la création de contrôleur est très simple, mais il faut se souvenir de quelques points : Un contrôleur est une classe qui étends de Zend_Controller_Action. Cette classe est nommée Controller ( étant le nom du contrôleur). Un contrôleur possède des actions nommées suivant la convention Action ( étant le nom de mon action. De ce faite, nous aurons un contrôleur qui ressemblera à cela : class IndexController extends Zend_Controller_Action{ public function indexaction(){ } } Simple non? 2 of 11 12/08/2010 11:14 AM
De plus le contrôleur permet d envoyer des variables à la vue. Pour envoyer une variable à la vue, il vous suffit de vous mettre dans une action et ajouter votre code comme cela : $this->view->mavariable = $lavarenvoyealavue; Pour récupérer cette variable dans la vue correspondante à l action du contrôleur demandé, il vous suffit de faire comme cela : echo $this->mavariable; Encore très simple! Les contrôleurs et les aide d action (Action Helpers) Le Zend Framework possède dans ses sources des fichiers php nommés Action Helpers, qui vont permettre d effectuer des actions souvent recherchés par les développeurs et très souvent utilisés. Ce sont donc des aides rapide qui permettent d accéder à des composants du framework directement à partir d une action dans le contrôleur. Bien évidemment, vous pouvez créer vos propres action helpers. Nous allons prendre pour exemple un helper très connu des développeurs des framework, qui à été tiré du célèbre framework Ruby RubyOnRails : le FlashMessenger! Ce composant permet de montrer un message à votre utilisateur suite à une action effectuée. Pour appeler un helper dans une action, on utilise cela : // Ici, FlashMessenger est le nom du helper. $this->_helper->gethelper('flashmessenger'); Pour utiliser le helper FlashMessenger, il vous suffit de faire cela : $this->_helper->gethelper('flashmessenger')->addmessage("ici mon message pour les utilisateurs"); // Et pour envoyer les messages à la vue : $this->view->messages = $this->_helper->gethelper('flashmessenger')->getmessages(); Ce helper permet d ajouter des messages dans un tableau et est détruit à chaque chargement de page. Ce qui permet d envoyer plusieurs messages à un utilisateur sans problème! Explication et utilisation sur le Routing avec le Zend Framework Le routing permet de définir un URL différente pour un contrôleur, un module et une action donnée. 3 of 11 12/08/2010 11:14 AM
Un exemple vaut toujours mieux qu un long discours : Imaginons, nous avons un contrôleur users et une action register, nous aurons une url de ce genre pour accéder à la page voulue : http://monsite.com/users /register, ce qui n ai pas vraiment optimisé pour le référencement. On va donc créer une route qui va permettre de diriger notre contrôleur et action vers la page : http://monsite.com/register pour le référencement. Pour cela nous allons nous rendre dans notre bootstrap, et allons ajouter cette méthode dans notre classe : protected function _initroutes() { $routeur = Zend_Controller_Front::getInstance()->getRouter(); $routeur->addroute('register', new Zend_Controller_Router_Route_Static('register', array( 'module' => 'frontend', 'controller' => 'users', 'action' =>'register')) ); } return $routeur; De cette fâçon, nous allons pouvoir changer les adresses de nos actions simplement grâce au routing. Conclusion Dans cet épisode, nous avons vu comment il est simple, avec le Zend Framework, de gérer les routes et de créer des contrôleur. Je vous rappel que vous pouvez me suggérer des articles ou des vidéos sur la page de suggestion. Le prochain épisode ne sera malheureusement pas publié lundi prochain pour cause de vacances! Le retour de la série est donc prévu pour le 3 août! Notes Encore désolé, mais cet article à été écrit a 2h du matin le samedi matin (vendredi soir) et je pars en vacances le samedi matin à 10h, il est donc un peu plus court que les autres! Retrouvez la version pour Symfony sur LaFermeDuWeb 4 of 11 12/08/2010 11:14 AM
Vous avez aimé cet article? 0 tweet Partager sur Facebook «Vacances Tutorial : Créer une application avec le Zend Framework #5 Le layout, les vues et les helpers» Regarder la vidéo Publicité buzzing Je vous recommande aussi la lecture des sujets suivants Tutorial : Créer une application avec le Zend Framework #7 Intégration du design de WatchMyDesk Tutorial : Créer une application avec le Zend Framework #3 Création des modèles et explication du MVC Tutorial : Créer une application avec le Zend Framework #2 Préparation de la base de données Tutorial : Créer une application avec le Zend Framework #8 Le formulaire d inscription de WatchMyDesk Tutorial : Créer une application avec le Zend Framework #6 L internationalisation Aucun trackback 7 commentaires 1. mi@ge 20 juillet 2009 à 13:12 1 La partie 4 de cette comparaison entre les deux applications n est pas très équitable, non? Sur la ferme du web les notions de debug, de multimodules, et de routing. Ici on ne parle que du routing et de la notion de viewhelper qui n est pas 5 of 11 12/08/2010 11:14 AM
abordée sur la ferme du web. 2. DJo 20 juillet 2009 à 17:36 2 @mi@ge: En effet, on était parti sur les contrôleurs / actions au début. Moi j ai un peu dérivé avec la toolbar de debug. Le comparatif sera fait avec le prochain, les deux frameworks ne sont pas les même, mais on fera plus synchro la prochaine 3. Telia 2 août 2009 à 10:59 3 Dans vos articles, pourriez-vous faire attention à l infinitif? Un truc ; pour savoir quand il faut dire «de gérer les routes» avec [er] pour le mot gérer ; remplacer le mot par «prendre» ou «courir». Avec ce moyen vous ne raterez plus vos infinitifs! ) 4. ziclo 20 novembre 2009 à 17:32 4 Bonsoir, J ai essayé le routing, je n arrive pas à le faire fonctionner. J ai suivi le tutoriel en indiquant une route dans le bootstrap directement et en utilisant un fichier de routes «routes.ini» mais cela ne change rien. Y a t il un ou des parametres essentiels à configurer pour activer le routing? Sur apache, le module rewrite est actif. Je ne vois pas ce qui bloque. Avez vous des idées, points evidents par lesquels vous etes passés avant de faire faire fonctionner le routing? 6 of 11 12/08/2010 11:14 AM
Merci 5. Clément 21 novembre 2009 à 17:42 5 @ziclo: Non rien avant de faire fonctionner, j ai télécharger MAMP et j ai lancer l application mod_rewrite étant installé je ne vois pas. Peux tu me montrer ton code? Merci:) @Telia: Yep! Désolé 6. ziclo 23 novembre 2009 à 10:11 6 Merci quand même. Encore une question : Je cherche à router l url : «basepath/index/cabinet» vers «basepath/cabinet». Zend indiquant «index» à chaque fois, chose que je veux éviter. Les codes de mon «boostrap» et du «routes.ini» sont les suivants : /*BOOTSTRAP*/ protected function _initrouter(){ /*$this->bootstrap( frontcontroller ); $front = $this->getresource( frontcontroller ); $router = $front->getrouter();*/ $router = new Zend_Controller_Router_Rewrite(); $router->addconfig(new Zend_Config_Ini(APPLICATION_PATH. /configs /routes.ini, routes ), routes ); /*return $router;*/ } /*routes.ini*/ [routes] routes.index.type = «Zend_Controller_Router_Route_Static» routes.index.route = «allelouia» routes.index.defaults.controller = «index» routes.index.defaults.action = «about» 7 of 11 12/08/2010 11:14 AM
Avec ce code ça ne fonctionne pas. Une idée? 7. Ariden 5 septembre 2010 à 19:07 7 Bonjour, c est dommage de ne pas avoir préciser que pour le helper on pouvait récupérer la valeur $this->view->messages via $this->messages[n-1] dans la vue. Merci pour ce tuto Laisser un commentaire Nom (obligatoire) E-mail (ne sera pas publié) obligatoire, Vous voulez un avatar? Créez vous un compte sur Gravatar Site Web Ajouter du code dans votre commentaire? Rendez-vous sur Pastie.com. Notify me of followup comments via e-mail 8 of 11 12/08/2010 11:14 AM
Votre adresse email S'abonner Devenir Fan de Dator.fr Dator sur Facebook J aime 299 Dator.fr sur Facebook Nuage de tags Adobe AIR Ajax Blog CMS Concours CSS CSS2 Drupal Découverte Electro Facebook Firefox Flex Framework Fun Google HTML Internet Explorer Javascript jquery Lightbox Mootools Orienté Objet PHP Plugin Plugins Prototype Reseaux Sociaux Safari Screencasts Scriptaculous Site Web SQL Symfony Tutoriel Twitter Vidéos Watchmydesk Web 2.0 Wordpress xhtml XML Zend Zend Framework Sponsors Télécharger gratuitement les articles de PHP Solutions Veille 9 of 11 12/08/2010 11:14 AM
Une erreur est survenue ; le flux est probablement indisponible. Veuillez réessayer plus tard. Blogoliste Vincent est au jardin Blogs Amis Balbou Blog Damien Alexandre LyRix Blog MickDez Startupz Steaw Victor Nicollet Vincent est au jardin Wiip Derniers Posts Blog au ralenti Générer automatiquement des URLs avec Pathauto et Token [Coup de Pouce] Mon adresse Change, un service très utile quand on déménage Drupal ou Joomla! : lequel correspond le mieux à vos besoins? Résultat du concours de Noël avec le Bundle Weecast! Projet tutoré: Drupal Stone Concours - Un méga bundle de Noël offert par Weecast Afficher un élément HTML selon la position du scroll de la page avec jquery Le résultat du concours pour les invitations Google Wave Je serais au forum PHP 2009 - La conférence des développeurs PHP & MySQL Derniers Commentaires 10 of 11 12/08/2010 11:14 AM
Elodie: Bonjour, Super vidéo, ca m'a permis de Dichama: Bonjour, Merci pour ce code qui Dominique: Bonjour, Le lien http://roundcorners.avinoam.info/ ne fonctionne pas ou noki: Salut et merci pour ce code, petite 17h13r: Pour la vérification du mot de benoit: bonjour clément, j'ai le meme probleme Thomas B: Merci pour ce comparatif! La aiglefin: Slt les gars. j'ai pu trouvé aiglefin: Après plusieurs recherches, ce tutoriel est Julien Vernet: Dommage que l'exemple ne fonctionne pas Les meilleurs sujets Concours : Gagnez 25 invitations Google Wave sur Dator.fr! (203) Tutorial : Créer une application avec le Zend Framework #1 Préparation de l environnement de WatchMyDesk (87) Concours Un méga bundle de Noël offert par Weecast (55) Tutorial : Créer une application avec le Zend Framework #3 Création des modèles et explication du MVC (40) Tutorial : Créer une application avec le Zend Framework #7 Intégration du design de WatchMyDesk (36) Tutorial : Créer une application avec le Zend Framework #6 L internationalisation (33) Tutorial : Créer une application avec le Zend Framework #8 Le formulaire d inscription de WatchMyDesk (33) Une pagination en Ajax (32) Votre choix compte pour le mois de screencast sur Zend! A vous la parole! (29) Comment mettre en place le Initializer du Zend Framework 1.7 (Db et Routes) (28) Propulsé par WordPress 11 of 11 12/08/2010 11:14 AM