Url de ZF et distribution des rôles aux contrôleurs
Avec Zend Framework, de base le système mis en place par le contrôleur est celui-ci :
| url | module | contrôlleur | action | paramè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
Maintenant ajoutons la gestion des modules news et livredor:
 $ctrl->setControllerDirectory(     array(         'news'    => '/module/news/controllers',         'livredor'    => '/livredor/ctrl'     ) ); 
| url | module | contrôlleur | action | paramètre | 
| http://exemple.test/ | default | index | index |  | 
| http://exemple.test/news | news | index | index |  | 
| http://exemple.test/news/ajouter | news | ajouter | index |  | 
| http://exemple.test/news/modifier/id/5 | news | modifier | id |  | 
| http://exemple.test/news/modifier/?id=5 | news | modifier | index | id=5 | 
Comprendre le Zend_Controller_Router_Route
ce que l’on vient de voir s’explique par ceci :
 $route = new Zend_Controller_Router_Route(     ':module/:controller/:action/*',     array('module' => 'default') ); $router->addRoute('default', $route); 
Ce qui correspond à l’option par défaut. De plus, ceci nous montre un exemple de paramètre par défaut, en effet à module, on attribue la valeur default
.
Allons plus loin et créer nos propres routes!
Route personnalisée
imagions un espace membre, on désire afficher chaque profile. On pourrait imaginer quelque chose du genre : http://exemple.test/profil/voir/id/5
 ou encore http://exemple.test/profil/voir/membre/grummfy
 afin d’avoir le contrôleur profil
 et et l’action voir
. Cependant ce n’est ni joli, ni pratique. Utilisons donc le Zend_Controller_Router_Route
 $route = new Zend_Controller_Router_Route(     'profiledemembre/:username/*',     array(         'controller' => 'profil',         'action'     => 'voir'     ) ); $router->addRoute('myProfileRoute', $route); 
Ce qu’on fait pour les url du type http://exemple.test/profiledemembre/grummfy
, on assigne les valeurs suivantes :
 * controller = profil  * action = voir  * username = grummfy, ceci via les :  * et on garde la possibilité d'avoir des paramètres avec *
Dans le contrôleur profil, on fera ceci :
 <?php public function voirAction() {     $request = $this->getRequest();     $username = $request->getParam('username');     // ou     $username = $this->_getParam('username'); } 
Aller plus loin
Le manuel de Zend vous enseignera comment faire des url avec expression régulière ou encore des rotue static, et bien plus! Mais aussi cette autre page : http://framework.zend.com/manual/fr…