Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'ai enfin trouvé un peu de temps pour rédiger mon tutoriel sur les plugins, les helpers et le MVC en général du Zend Framework.
http://www.kitpages.fr/zf_helper_plugin.php
N'hésitez pas à m'envoyer des remarques. Il est assez théorique et assez dense. Il s'adresse à des utilisateurs déjà assez avertis du ZF.
A+, Philippe
Hors ligne
Salut, ton tuto est excellent, ca permet de mieux comprendre toutes les notions qu'utilisent le ZF.
J'ai également vu qu'il était préférable d'utiliser un helper plutôt que de créer un controlleur abstrait (héritant de Zend_Controller_Action) si on utilise les mêmes opérations d'initialisation à chaque controller.
Supposons que j'utilise le helper de ton tuto, dans ce cas-là tous mes controllers auront accès à la variable $this->session. Mais si je veux annuler la création d'une session (ce n'est qu'un exemple) dans le controller X, que dois-je faire ?
Sinon un tuto sur Zend_Layout est-il prévu ? Je dois dire que je galère pas mal avec en ce moment...
Hors ligne
Bonjour ALkyD,
Dans ton helper, tu as accès à la requête. Dans toutes tes méthodes tu peux utiliser :
$request = $this->getRequest(); $ctrlName = $request->getControllerName();
A+, Philippe
Hors ligne
Bonjour Philippe, Bonjour les autres
J'ai lu ton tuto, très bien de l'avoir écrit. Il reprend les éléments de base de la doc. Je parle des Helper d'action. J'ai une question, car j'ai cru lire dans la documentation ZF qu'un helper relève du DP Fabrique ou Factory en anglais. Or après plusieurs essais, ou alors il y a quelque chose qui m'échappe, à mon sens ce n'est pas du tout le cas. Ta petite démo le prouve bien, il faut créer l'objet pour l'enregistrer dans le Broker et en plus dans le bootstrap (donc avant la création du contrôleur contrairement à ce que tu dis) par contre son usage se fait dans le contrôleur. J'aurai mieux compris un enregistrement dans le broker du nom de la classe via le addPath() et ce même broker fort d'un getInstance() ou similaire nous retourne l'objet à la demande.
Donc de prime abord je ne vois pas la différence d'usage du broker/négociateur en l'état avec le Registry, car le addHelper est également une méthode statique....
Mais je pense qu'il y a quelque chose qui m'échappe...
Merci de m'éclairer si tu peux Philippe ou tout autre personne
Merci à vous tous pour votre aide
Marcel @+
philippe a écrit:
Bonjour,
J'ai enfin trouvé un peu de temps pour rédiger mon tutoriel sur les plugins, les helpers et le MVC en général du Zend Framework.
http://www.kitpages.fr/zf_helper_plugin.php
N'hésitez pas à m'envoyer des remarques. Il est assez théorique et assez dense. Il s'adresse à des utilisateurs déjà assez avertis du ZF.
A+, Philippe
Dernière modification par mbariou (15-04-2008 13:39:04)
Hors ligne
Bonjour mbariou,
Je ne suis pas un grand théoricien (je suis plus du genre à faire des sites à la chaine et à chaque site, je comprends des trucs en plus )... je ne suis jamais allé voir le DP factory... Donc pareil, la réponse tient sur des arguments pratiques et pas théoriques.
L'intérêt d'instancier le helper dans le bootstrap, c'est qu'on peut le configurer. S'il a besoin d'un chemin ou d'une config ou n'importe quoi, on peut ajouter dans le bootstrap des $helper->setMyPath($path) ou autre $helper->setConfig($config)... (mécanisme d'injection de dépendance).
Sinon vu du bootstrap, il n'y a pas vraiment de différence entre un broker et la registry. Par contre, en interne dans le ZF, le broker gère l'appel à aux preDispatch() et postDispatch() de chaque helper enregistré.
Ta petite démo le prouve bien, il faut créer l'objet pour l'enregistrer dans le Broker et en plus dans le bootstrap (donc avant la création du contrôleur contrairement à ce que tu dis) par contre son usage se fait dans le contrôleur.
tu penses à la phrase "Un helper est appelé une fois que le routage est terminé" ?
Je dis juste qu'il est appelé, au sens où les preDispatch et postDispatch sont appelés qu'une fois le routage terminé. Par contre effectivement il est instancié avant (dans le bootstrap).
Si il y a une autre phrase à problème, tu peux me dire laquelle, il y a peut-être une boulette dans le tuto, dans ce cas il faudrait que je la corrige.
A+, Philippe
Hors ligne
Bonjour Philippe,
Merci de répondre à ma demande,
philippe a écrit:
Je ne suis pas un grand théoricien (je suis plus du genre à faire des sites à la chaine et à chaque site, je comprends des trucs en plus
)... je ne suis jamais allé voir le DP factory... Donc pareil, la réponse tient sur des arguments pratiques et pas théoriques.
Rien de plus pratique qu'une théorie juste, d'une manière générale quand l'information est exacte, on perd moins de temps. Un chat s'appelle toujours un chat, si on dit que c'est une vache on pourrait penser qu'il faille déplacer la machine à traire, plutôt que de la litière à chat.
C'est une remarque de caractère général, elle ne s'adresse pas à toi....
L'intérêt d'instancier le helper dans le bootstrap, c'est qu'on peut le configurer. S'il a besoin d'un chemin ou d'une config ou n'importe quoi, on peut ajouter dans le bootstrap des $helper->setMyPath($path) ou autre $helper->setConfig($config)... (mécanisme d'injection de dépendance).
Pas nécessaire, je te renvoie à la fin du fil de discussion que j'ai eu hier, http://www.z-f.fr/forum/viewtopic.php?id=1114 , un broker doit être capable d'enregistrer une classe et de l'instancier si besoin est...
Sinon vu du bootstrap, il n'y a pas vraiment de différence entre un broker et la registry. Par contre, en interne dans le ZF, le broker gère l'appel à aux preDispatch() et postDispatch() de chaque helper enregistré.
Si c'est différent ! un broker est capable d'instancier une classe, un Zend_Registry ne fait que restituer des objets ou des variables... C'est une varaible globale capable d'enregister des objets dans un état donné
Si il y a une autre phrase à problème, tu peux me dire laquelle, il y a peut-être une boulette dans le tuto, dans ce cas il faudrait que je la corrige.
Ton tuto est juste, et je te remercie de l'avoir écrit. Il n'y a pas de problème tout au plus il faudrait que tu donnes un exemple où il n'est pas nécessaire d'instancier l'objet Helper dans le contrôleur, tu peux reprendre in-extenso l'exemple que j'ai introduit dans le fil de discussion à la fin... http://www.z-f.fr/forum/viewtopic.php?id=1114 (inutile de faire référence à moi, tu me rends suffisament de services par ton travail sur ce site...)
Tout cela ne sont que des choses bien pratique...
Je te remercie pour tout
@+ Marcel
Hors ligne
Pages: 1