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…
Similar Posts:
- None Found