{"id":216,"date":"2010-01-02T17:32:29","date_gmt":"2010-01-02T15:32:29","guid":{"rendered":"http:\/\/grummfy.be\/blog\/?p=216"},"modified":"2010-01-02T17:32:29","modified_gmt":"2010-01-02T15:32:29","slug":"notezend-framework-et-dojo-auto-completion","status":"publish","type":"post","link":"https:\/\/grummfy.be\/blog\/216","title":{"rendered":"[note]Zend Framework et dojo : auto-compl\u00e9tion"},"content":{"rendered":"<p style=\"text-align: justify;\">Ceci est une note rapide &#8230; j&rsquo;esp\u00e8re produire un article plus int\u00e9ressant une autre fois &#8230;<\/p>\n<p style=\"text-align: justify;\">Nous allons regarder les bases de l&rsquo;auto-compl\u00e9tion\u00a0 avec <a href=\".\/?tag=zf\">ZF<\/a> et Dojo. Dojo simplement parce qu&rsquo;il est le mieux int\u00e9gr\u00e9 des frameworks javascript. Sachant que pour l&rsquo;instant seul jQuery et Dojo sont int\u00e9gr\u00e9<\/p>\n<h2>Le code<\/h2>\n<p><em>application\/views\/scripts\/test\/index.phtml<\/em><\/p>\n<pre lang=\"php\">\r\n<?php\r\n$this->dojo()->enable();\t\/\/activation de dojo\r\n\r\necho $this->comboBox(\r\n\t'toto',\t\/\/id html de l'\u00e9l\u00e9ment\r\n\t'',\t\/\/valeur par d\u00e9faut\r\n\tarray(\r\n\t\t'autocomplete'\t=> true,\t\t\t\t\t\t\t\t\/\/activation de l'auto-compl\u00e9tion\r\n\t\t'store'\t\t=> 'stateStore',\r\n\t\t'storeType'\t\t=> 'dojo.data.ItemFileReadStore',\r\n\t\t'storeParams'\t=> array('url' => $this->baseUrl('\/test\/records')),\t\/\/url o\u00f9 les donn\u00e9es JSON sont r\u00e9cup\u00e9r\u00e9e\r\n\t\t'searchAttr'\t\t=> 'title',\t\t\t\t\t\t\t\t\/\/donn\u00e9e recherch\u00e9e pour remplir le combobox\r\n\t)\r\n);\r\n?>\r\n<\/pre>\n<p><em>application\/layoutes\/scripts\/layout.phtml<\/em><\/p>\n<pre lang=\"php\">\r\n\/\/ ...\r\n\t\tif ($this->dojo()->isEnabled())\t\/\/\u00c9vite les chargement inutile ....\r\n\t\t{\r\n\t\t\t$this->dojo()->setDjConfigOption('isDebug', (APPLICATION_ENV == 'development'));\t\/\/affiche une console de deboguage si on est en mode dev\r\n\t\t\t$this->dojo()->setDjConfigOption('usePlainJson', true);\t\t\t\t\t\t\/\/utilise du json texte\r\n\t\t\t$this->dojo()->setLocalPath($this->baseUrl('\/themes\/js\/dojo\/dojo\/dojo.js'));\t\t\t\/\/chemin vers les fichier dojo\r\n\t\t\t$this->dojo()->addStyleSheetModule('dijit.themes.tundra');\t\t\t\t\t\/\/th\u00e8me \u00e0 charg\u00e9\r\n\t\t\techo $this->dojo();\t\t\t\t\t\t\t\t\t\t\t\t\/\/affichage du tout ...\r\n\t\t}\r\n\/\/ viennent ensuite nos jabvascript, css, etc\r\n\/\/...\r\n\/\/<\/head>\r\n\/\/ ne pas oublier la class tundra dans le body\r\n<body class=\"tundra\">\r\n\/\/...\r\n<\/pre>\n<p><em>application\/Bootstrap.php<\/em><\/p>\n<pre lang=\"php\">\r\n\/\/...\r\n\/\/dans _initView()\r\n\t\t\/\/dojo\r\n\t\tZend_Dojo::enableView($view);\r\n\/\/...\r\n<\/pre>\n<p><em>application\/controllers\/TestController.php<\/em><\/p>\n<pre lang=\"php\">\r\n<?php\r\n\r\nclass TestController extends Zend_Controller_Action\r\n{\r\n\tpublic function indexAction()\r\n\t{\r\n\t}\r\n\r\n\tpublic function recordsAction()\r\n\t{\r\n\t\t\/\/ on d\u00e9sactive l'affichage\r\n\t\t$this->_helper->layout()->disableLayout();\r\n\r\n\t\t\/\/on va cherch\u00e9e les donn\u00e9es et les met dans un objet Zend_Dojo_Data\r\n\t\t$book = new Default_Model_DbTable_Book();\r\n\t\t$dojo = new Zend_Dojo_Data('title', $book->fetchAll());\r\n\t\techo $dojo->toJson();\r\n\r\n\t\t\/\/ on sort ... c'est pas joli mais en attendant cela fonctionne!\r\n\t\texit();\r\n\t}\r\n}\r\n\r\n# EOF\r\n\r\n<\/pre>\n<h2>Choses \u00e0 <span style=\"text-decoration: line-through;\">retenir<\/span> comprendre<\/h2>\n<p>Les choses \u00e0 retenir :<\/p>\n<ul>\n<li><em>storeParams<\/em> est l&rsquo;url o\u00f9 les donn\u00e9e au format JSON seront prise<\/li>\n<li><em>searchAttr<\/em> est l&rsquo;\u00e9l\u00e9ment qui va servir pour recherch\u00e9e les donn\u00e9es dans la masse de donn\u00e9e JSON<\/li>\n<li>ne pas oublier de mettre la class css &lsquo;tundra&rsquo;<\/li>\n<li>Dojo peut, via ses styles css modifier votre rendu &#8230;<\/li>\n<\/ul>\n<h2>Remarque<\/h2>\n<p>Version de ZF : 1.9.6<\/p>\n<p>Version de Dojo (fourni avec zf dans extras) : 1.3<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ceci est une note rapide &#8230; j&rsquo;esp\u00e8re produire un article plus int\u00e9ressant une autre fois &#8230;<br \/>\nNous allons regarder les bases de l&rsquo;auto-compl\u00e9tion  avec ZF et Dojo. Dojo simplement parce qu&rsquo;il est le mieux int\u00e9gr\u00e9 des frameworks javascript. Sachant que pour l&rsquo;instant seul jQuery et Dojo sont int\u00e9gr\u00e9&#8230;<\/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,4],"tags":[38,45,110,24,37,64],"class_list":["post-216","post","type-post","status-publish","format-standard","hentry","category-dev","category-general","tag-decouverte","tag-js","tag-php","tag-programmation","tag-web","tag-zf"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/216","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=216"}],"version-history":[{"count":3,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/216\/revisions"}],"predecessor-version":[{"id":219,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/216\/revisions\/219"}],"wp:attachment":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/media?parent=216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/categories?post=216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/tags?post=216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}