{"id":69,"date":"2007-08-13T18:01:00","date_gmt":"2007-08-13T18:01:00","guid":{"rendered":"http:\/\/grummfy.be\/blog\/?p=69"},"modified":"2007-08-13T18:01:00","modified_gmt":"2007-08-13T18:01:00","slug":"zf-comprendre-le-fonctionnement-des-urls","status":"publish","type":"post","link":"https:\/\/grummfy.be\/blog\/69","title":{"rendered":"ZF : comprendre le fonctionnement des urls"},"content":{"rendered":"<h2>Url de ZF et distribution des r\u00f4les aux contr\u00f4leurs<\/h2>\n<p>Avec Zend Framework, de base le syst\u00e8me mis en place par le contr\u00f4leur est celui-ci&nbsp;:<\/p>\n<table>\n<tbody>\n<tr>\n<td>url<\/td>\n<td>module<\/td>\n<td>contr&#244;lleur<\/td>\n<td>action<\/td>\n<td>param&#232;tre<\/td>\n<\/tr>\n<tr>\n<td>http:\/\/exemple.test\/<\/td>\n<td>default<\/td>\n<td>index<\/td>\n<td>index<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>http:\/\/exemple.test\/news<\/td>\n<td>default<\/td>\n<td>news<\/td>\n<td>index<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>http:\/\/exemple.test\/news\/ajouter<\/td>\n<td>default<\/td>\n<td>news<\/td>\n<td>ajouter<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>http:\/\/exemple.test\/news\/modifier\/id\/5<\/td>\n<td>default<\/td>\n<td>news<\/td>\n<td>modifier<\/td>\n<td>id=5<\/td>\n<\/tr>\n<tr>\n<td>http:\/\/exemple.test\/news\/modifier\/?id=5<\/td>\n<td>default<\/td>\n<td>news<\/td>\n<td>modifier<\/td>\n<td>id=5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Avec des modules perso<\/h2>\n<p>Maintenant ajoutons la gestion des modules news et livredor:<\/p>\n<pre> $ctrl-&gt;setControllerDirectory(     array(         'news'    =&gt; '\/module\/news\/controllers',         'livredor'    =&gt; '\/livredor\/ctrl'     ) ); <\/pre>\n<table>\n<tbody>\n<tr>\n<td>url<\/td>\n<td>module<\/td>\n<td>contr&#244;lleur<\/td>\n<td>action<\/td>\n<td>param&#232;tre<\/td>\n<\/tr>\n<tr>\n<td>http:\/\/exemple.test\/<\/td>\n<td>default<\/td>\n<td>index<\/td>\n<td>index<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>http:\/\/exemple.test\/news<\/td>\n<td>news<\/td>\n<td>index\n      <\/td>\n<td>index<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>http:\/\/exemple.test\/news\/ajouter<\/td>\n<td>news<\/td>\n<td>ajouter<\/td>\n<td>index\n      <\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>http:\/\/exemple.test\/news\/modifier\/id\/5<\/td>\n<td>news<\/td>\n<td>modifier<\/td>\n<td>id\n      <\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>http:\/\/exemple.test\/news\/modifier\/?id=5<\/td>\n<td>news<\/td>\n<td>modifier<\/td>\n<td>index<\/td>\n<td>id=5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Comprendre le Zend_Controller_Router_Route<\/h2>\n<p>ce que l&rsquo;on vient de voir s&rsquo;explique par ceci&nbsp;:<\/p>\n<pre> $route = new Zend_Controller_Router_Route(     ':module\/:controller\/:action\/*',     array('module' =&gt; 'default') ); $router-&gt;addRoute('default', $route); <\/pre>\n<p>Ce qui correspond \u00e0 l&rsquo;option par d\u00e9faut. De plus, ceci nous montre un exemple de param\u00e8tre par d\u00e9faut, en effet \u00e0 module, on attribue la valeur <q>default<\/q>.<\/p>\n<p>Allons plus loin et cr\u00e9er nos propres routes!<\/p>\n<h3>Route personnalis\u00e9e<\/h3>\n<p>imagions un espace membre, on d\u00e9sire afficher chaque profile. On pourrait imaginer quelque chose du genre&nbsp;: <q>http:\/\/exemple.test\/profil\/voir\/id\/5<\/q> ou encore <q>http:\/\/exemple.test\/profil\/voir\/membre\/grummfy<\/q> afin d&rsquo;avoir le contr\u00f4leur <q>profil<\/q> et et l&rsquo;action <q>voir<\/q>. Cependant ce n&rsquo;est ni joli, ni pratique. Utilisons donc le Zend_Controller_Router_Route<\/p>\n<pre> $route = new Zend_Controller_Router_Route(     'profiledemembre\/:username\/*',     array(         'controller' =&gt; 'profil',         'action'     =&gt; 'voir'     ) ); $router-&gt;addRoute('myProfileRoute', $route); <\/pre>\n<p>Ce qu&rsquo;on fait pour les url du type <q>http:\/\/exemple.test\/profiledemembre\/grummfy<\/q>, on assigne les valeurs suivantes&nbsp;:<\/p>\n<pre> * controller = profil  * action = voir  * username = grummfy, ceci via les :  * et on garde la possibilit\u00e9 d'avoir des param\u00e8tres avec <q>*<\/q><\/pre>\n<p>Dans le contr\u00f4leur profil, on fera ceci&nbsp;:<\/p>\n<pre> &lt;?php public function voirAction() {     $request = $this-&gt;getRequest();     $username = $request-&gt;getParam('username');     \/\/ ou     $username = $this-&gt;_getParam('username'); } <\/pre>\n<h2>Aller plus loin<\/h2>\n<p>Le <a href=\"http:\/\/framework.zend.com\/manual\/fr\/zend.controller.router.html\">manuel de Zend<\/a> vous enseignera comment faire des url avec expression r\u00e9guli\u00e8re ou encore des rotue static, et bien plus! Mais aussi cette autre page&nbsp;: <a href=\"http:\/\/framework.zend.com\/manual\/fr\/zend.controller.modular.html\" title=\"http:\/\/framework.zend.com\/manual\/fr\/zend.controller.modular.html\">http:\/\/framework.zend.com\/manual\/fr&#8230;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Url de ZF et distribution des r\u00f4les aux contr\u00f4leurs Avec Zend Framework, de base le syst\u00e8me mis en place par le contr\u00f4leur est celui-ci&nbsp;: url module contr&#244;lleur action param&#232;tre http:\/\/exemple.test\/ default index index http:\/\/exemple.test\/news default news index http:\/\/exemple.test\/news\/ajouter default news ajouter http:\/\/exemple.test\/news\/modifier\/id\/5 default news modifier id=5 http:\/\/exemple.test\/news\/modifier\/?id=5 default news modifier id=5 Avec des modules perso [&hellip;]<\/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],"tags":[25,110,24,28,65,37,35,64],"class_list":["post-69","post","type-post","status-publish","format-standard","hentry","category-dev","tag-mywsp","tag-php","tag-programmation","tag-trucs-et-astuces","tag-tutoriel","tag-web","tag-web-semantique","tag-zf"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/69","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=69"}],"version-history":[{"count":0,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/69\/revisions"}],"wp:attachment":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/media?parent=69"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/categories?post=69"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/tags?post=69"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}