La première version du Zend Framwork nous avait habitué aux évènements preDispatch() et postDispatch().

Ces deux méthodes à placer dans un contrôleur étaient respectivement appelées avant et après notre action.

Voici comment les retrouver dans Zend Framwork 2

 

IndexController

Je prends ici l'exemple de l'IndexController, dans le module Application, mais libre à vous de l'appliquer ailleurs ou de faire une classe parente abstraite.

Nous allons tout simplement définir nos deux méthodes, et les attacher au gestionnaire d'évènements.

Ces méthodes seront appelées par le Zend\Mvc\Controller\PluginManager et doivent donc être publiques.

/**
 * IndexController
 * @author Bidoum
 */
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\Mvc\MvcEvent;
/**
 * Controleur principal
 *
 * @author Bidoum
 */
class IndexController extends AbstractActionController
{
	/**
	 * Attache les évènements
	 * @see \Zend\Mvc\Controller\AbstractController::attachDefaultListeners()
	 */
	protected function attachDefaultListeners()
	{
		parent::attachDefaultListeners();
		
		$events = $this->getEventManager();
		$events->attach('dispatch', array($this, 'preDispatch'), 100);
		$events->attach('dispatch', array($this, 'postDispatch'), -100);
	}
	
	/**
	 * Avant l'action
	 * @param MvcEvent $e
	 */
	public function preDispatch (MvcEvent $e)
	{
		
	}
	
	/**
	 * Après l'action
	 * @param MvcEvent $e
	 */
	public function postDispatch (MvcEvent $e)
	{
		
	}
}

C'est aussi simple que ça !