{"id":191,"date":"2009-12-27T20:21:56","date_gmt":"2009-12-27T18:21:56","guid":{"rendered":"http:\/\/grummfy.be\/blog\/?p=191"},"modified":"2009-12-27T20:21:56","modified_gmt":"2009-12-27T18:21:56","slug":"utilisation-de-flashmessenger-via-un-view-helper-dans-zend-framework","status":"publish","type":"post","link":"https:\/\/grummfy.be\/blog\/191","title":{"rendered":"Utilisation de FlashMessenger via un view helper dans Zend Framework"},"content":{"rendered":"<p style=\"text-align: justify;\"><a title=\"Manuel Zend Framework sur FlashMessenger\" href=\"http:\/\/framework.zend.com\/manual\/en\/zend.controller.actionhelpers.html#zend.controller.actionhelpers.flashmessenger\">FlashMessanger<\/a> est \u00e0 la base un action helper, donc confin\u00e9 au contr\u00f4leur. Celui-ci permet de passer un message d&rsquo;une page \u00e0 l&rsquo;autre via le m\u00e9canisme des sessions . Apr\u00e8s un formulaire on doit souvent ajouter un message de confirmation, on peux par exemple utilis\u00e9 le FlashMessenger pour le faire et ainsi au r\u00e9-affichage suivant\u00a0 afficher ce message!\u00a0 C&rsquo;est tellement pratique qu&rsquo;il est dommage de ne pas pouvoir l&rsquo;utiliser a travers les vue (view) de mani\u00e8re automatique&#8230;<\/p>\n<p>Je vous propose donc de l&rsquo;utiliser via un view helper!<\/p>\n<p><!--more--><\/p>\n<h2>L&rsquo;aide de vue<\/h2>\n<p style=\"text-align: justify;\">Voici l&rsquo;aide de vue (view helper) FlashMessenger (du m\u00eame nom que l&rsquo;action helper). Il est \u00e0 placer dans application\/views\/helpers\/FlashMessenger.php<\/p>\n<pre lang=\"php\"><?php\r\n\r\n\/**\r\n * @see Zend_Controller_Action_Helper_FlashMessenger\r\n *\/\r\nrequire_once 'Zend\/Controller\/Action\/Helper\/FlashMessenger.php';\r\n\r\n\/**\r\n * @author grummfy\r\n *\/\r\nclass Zend_View_Helper_FlashMessenger extends Zend_View_Helper_Abstract implements IteratorAggregate, Countable\r\n{\r\n\tprotected $_fm;\r\n\r\n\tpublic function __construct()\r\n\t{\r\n\t\t$this->_fm = new Zend_Controller_Action_Helper_FlashMessenger();\r\n\t}\r\n\r\n\tpublic function flashMessenger($cur = false)\r\n\t{\r\n\t\tif ($cur)\r\n\t\t\treturn $this;\r\n\t\telse\r\n\t\t\treturn $this->getMessages();\r\n\t}\r\n\r\n\t\/**\r\n\t * Return currents FlashMessegenr object\r\n\t * @return Zend_Controller_Action_Helper_FlashMessenger\r\n\t *\/\r\n\tpublic function getFlasMessenger()\r\n\t{\r\n\t\treturn $this->_fm;\r\n\t}\r\n\r\n\t\/**\r\n\t * Return previous emmited messages\r\n\t * @return array\r\n\t *\/\r\n\tpublic function getMessages()\r\n\t{\r\n\t\treturn $this->_fm->getMessages();\r\n\t}\r\n\r\n\t\/**\r\n\t * Renvoi le nombre de messages pass\u00e9\r\n\t * @return int\r\n\t *\/\r\n\tpublic function hasMessages()\r\n\t{\r\n\t\treturn count($this->_fm);\t\t\r\n\t}\r\n\r\n\tpublic function getIterator()\r\n\t{\r\n\t\treturn $this->_fm->getIterator();\r\n\t}\r\n\r\n\tpublic function count()\r\n\t{\r\n\t\treturn $this->_fm->count();\r\n\t}\r\n}\r\n\r\n# EOF\r\n<\/pre>\n<\/p>\n<h2>Utilisation<\/h2>\n<p style=\"text-align: justify;\">\nPour l&rsquo;utiliser rien de plus simple, par exemple dans le layout :<\/p>\n<pre lang=\"php\">\r\n\t<?php\r\n\t\t\/\/ flashmessage\r\n\t\tif ($this->flashMessenger(true)->hasMessages()):\r\n\t?>\r\n\t<div id=\"flashMessengers\">\r\n\t\t<?php\r\n\t\t\tforeach($this->flashMessenger() as $msg)\r\n\t\t\t{\r\n\t\t\t\techo '<div class=\"flashMessenger\">';\r\n\t\t\t\tif (is_array($msg))\r\n\t\t\t\t\techo implode('<br \/>', $msg);\r\n\t\t\t\telse\r\n\t\t\t\t\techo $msg;\r\n\t\t\t\techo '<\/div>';\r\n\t\t\t}\r\n\t\t?>\r\n\t<\/div>\r\n\t<?php\r\n\t\tendif; \/\/ fin flashmessage\r\n\t?><\/pre>\n<p>Ceci peut tr\u00e8s bien \u00eatre utilis\u00e9 dans votre vue (view) avec exactement le m\u00eame code!<\/p>\n<p style=\"text-align: justify;\">Pour envoyer le message il vous suffit de simplement faire, dans votre contr\u00f4leur :<\/p>\n<pre lang=\"php\">\r\n\t\t\t$this->_helper->flashMessenger('Mise \u00e0 jour du truc effectu\u00e9es avec succ\u00e8s!');<\/pre>\n<\/p>\n<p><\/p>\n<p style=\"text-align: justify;\">\nEt c&rsquo;est tout!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>FlashMessanger est \u00e0 la base un action helper, donc confin\u00e9 au contr\u00f4leur. Cependant, c&rsquo;est tellement pratique qu&rsquo;il est dommage de ne pas pouvoir l&rsquo;utiliser a travers les vue (view)&#8230; Je vous propose donc de l&rsquo;utiliser via un view helper!<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[9,10,5],"tags":[110,24,28,37,64],"class_list":["post-191","post","type-post","status-publish","format-standard","hentry","category-dev","category-php","category-projet","tag-php","tag-programmation","tag-trucs-et-astuces","tag-web","tag-zf"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/comments?post=191"}],"version-history":[{"count":6,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/191\/revisions"}],"predecessor-version":[{"id":197,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/191\/revisions\/197"}],"wp:attachment":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/media?parent=191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/categories?post=191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/tags?post=191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}