Bonjour
J'aimerai savoir la différence entre entre la fonction "init" et "preDispatche" dans un controleur.
Merci d'avance
Bonjour
J'aimerai savoir la différence entre entre la fonction "init" et "preDispatche" dans un controleur.
Merci d'avance
Bonjour,
Le init peut etre comparer au constructeur du controller, du coup celui ci est appelé à l instanciation du controleur tandis que le predispatch est appelé avant l action, donc tout dépend de ce que tu veux faire.
Outre le côté "séparation des rôles" (init() sert à l'initialisation du contrôleur, comme le souligne 5h4rk c'est une sorte de constructeur fournit aux développeurs, tandis que preDispatch() est un hook qui se déclenche avant une action), il y a une différence de fonctionnement notable entre init() et preDispatch(), elle concerne les "forwards" vers une autre action (ex : test des autorisations et redirection si l'action n'est pas autorisée).
init() ne gère pas bien l'appel à la méthode _forward(), tandis que preDispatch() est (en partis) conçu pour : si la méthode _forward() est appelée pendant le preDispatch(), alors l'action d'origine ne sera pas appelée.
Tu trouveras plus de détails ici : http://framework.zend.com/manual/en/...repostdispatch
Partager