Tutorial : Créer une application avec le Zend Framework – #4 Explications sur les contrôleurs et sur le Routing

Publié le 20 juillet 2009 par Dator


Dans cet épisode, nous allons voir les conventions de nommage des contrôleurs et leur utilisation au sein du Zend Framework. Nous allons ensuite nous attaquer au routing, ce concept qui permet de dirigé notre application à partir de simple commande en PHP.

Plan de l’épisode #3

  1. Explications et conventions sur les contrôleurs.
  2. Conventions des contrôleurs.
  3. Les contrôleurs et les aide d’action (Action Helpers).
  4. Explication sur le Routing avec le Zend Framework.
  5. Conclusion.
  6. Notes.

Explications et conventions sur les contrôleurs

Un contrôleur est celui qui reçoit les évènements utilisateur de la vue et ordonne les éventuelles modifications au modèle. C’est aussi celui qui va chercher les résultats à partir des modèles.

Avec le Zend Framework, la création de contrôleur est très simple, mais il faut se souvenir de quelques points :

  • Un contrôleur est une classe qui étends de Zend_Controller_Action.
  • Cette classe est nommée __Controller ( __ étant le nom du contrôleur).
  • Un contrôleur possède des actions nommées suivant la convention __Action ( __ étant le nom de mon action.

De ce faite, nous aurons un contrôleur qui ressemblera à cela :

class IndexController extends Zend_Controller_Action{
     public function indexAction(){
     }
}

Simple non ?

De plus le contrôleur permet d’envoyer des variables à la vue. Pour envoyer une variable à la vue, il vous suffit de vous mettre dans une action et ajouter votre code comme cela :

$this->view->mavariable = $lavarenvoyealavue;

Pour récupérer cette variable dans la vue correspondante à l’action du contrôleur demandé, il vous suffit de faire comme cela :

echo $this->mavariable;

Encore très simple !

Les contrôleurs et les aide d’action (Action Helpers)

Le Zend Framework possède dans ses sources des fichiers php nommés Action Helpers, qui vont permettre d’effectuer des actions souvent recherchés par les développeurs et très souvent utilisés. Ce sont donc des aides rapide qui permettent d’accéder à des composants du framework directement à partir d’une action dans le contrôleur. Bien évidemment, vous pouvez créer vos propres action helpers.

Nous allons prendre pour exemple un helper très connu des développeurs des framework, qui à été tiré du célèbre framework Ruby RubyOnRails : le FlashMessenger ! Ce composant permet de montrer un message à votre utilisateur suite à une action effectuée.

Pour appeler un helper dans une action, on utilise cela :

// Ici, FlashMessenger est le nom du helper.
$this->_helper->getHelper('FlashMessenger');

Pour utiliser le helper FlashMessenger, il vous suffit de faire cela :

$this->_helper->getHelper('FlashMessenger')->addMessage("Ici mon message pour les utilisateurs");
// Et pour envoyer les messages à la vue :
$this->view->messages = $this->_helper->getHelper('FlashMessenger')->getMessages();

Ce helper permet d’ajouter des messages dans un tableau et est détruit à chaque chargement de page. Ce qui permet d’envoyer plusieurs messages à un utilisateur sans problème !

Explication et utilisation sur le Routing avec le Zend Framework

Le routing permet de définir un URL différente pour un contrôleur, un module et une action donnée.
Un exemple vaut toujours mieux qu’un long discours :

Imaginons, nous avons un contrôleur users et une action register, nous aurons une url de ce genre pour accéder à la page voulue : http://monsite.com/users/register, ce qui n’ai pas vraiment optimisé pour le référencement.
On va donc créer une route qui va permettre de diriger notre contrôleur et action vers la page : http://monsite.com/register pour le référencement.

Pour cela nous allons nous rendre dans notre bootstrap, et allons ajouter cette méthode dans notre classe :

protected function _initRoutes()
{
	$routeur = Zend_Controller_Front::getInstance()->getRouter();
	$routeur->addRoute('register', new Zend_Controller_Router_Route_Static('register', array(
		'module' => 'frontend',
		'controller' => 'users',
		'action' =>'register'))
	);

	return $routeur;
}

De cette fâçon, nous allons pouvoir changer les adresses de nos actions simplement grâce au routing.

Conclusion

Dans cet épisode, nous avons vu comment il est simple, avec le Zend Framework, de géré les routes et de créer des contrôleur.
Je vous rappel que vous pouvez me suggérer des articles ou des vidéos sur la page de suggestion.

Le prochain épisode ne sera malheureusement pas publié lundi prochain pour cause de vacances ! Le retour de la série est donc prévu pour le 3 août !

Notes

  • Encore désolé, mais cet article à été écrit a 2h du matin le samedi matin (vendredi soir) et je pars en vacances le samedi matin à 10h, il est donc un peu plus court que les autres !
  • Retrouvez la version pour Symfony sur LaFermeDuWeb