Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour/soir,
J'essaye de comprendre comment étendre un controller d'un module tier. J'utilise le module Zfcuser, j'aimerais étendre l'action index du controller "UserController".
Quelle est donc la meilleure manière pour réaliser cela ?
Pour l'instant ce que je peux faire c'est changer la route et crée mon controller, mais je voulais savoir si il y'aurait un moyen plus propre avec ZF2
Merci
Hors ligne
Bonjour,
Je ne connais pas très bien Zend, mais tu semble vouloir étendre une méthode ? C'est la classe entière qu'il faut étendre.
As-tu tout simplement essayer de créer ton controller et d'etendre le controller souhaité avec extends ? Puis de redéfinir la method index ?
Apres s'il y a un moyen plus "class" :p de le faire avec Zend, je laisse la parole aux spécialistes
Hors ligne
Bonjour,
Oui c'est ce que je fais pour l'instant, en utilisant extends.
En fait en cherchant je suis tombé sur ça, partie change a controller :
http://stackoverflow.com/questions/8783 … rm-classes
Mais apparemment ce n'est plus valable pour ZF 2.0.
Donc quelle est la bonne practice.
Hors ligne
Ca dépend de ce que tu souhaites changer. Si c'est une vue, il faut mieux tout simplement surcharger la vue en spécifiant ta vue à l'index de la vue que tu souhaites surcharger, dans ton template_map (je sais pas si c'est très clair u_u).
Si c'est bien un comportement, logiquement étendre le contrôleur devrait suffire, et évidemment changer l'alias du controleur.
Par exemple, si ton module dans lequel tu étends ton controleur s'appelle "Application", tu créés ton contrôleur en étendant celui de ZfcUser, puis dans le fichier module.config.php du module "Application", tu ajoutes ça :
[lang=php] 'controllers' => array( 'invokables' => array( 'zfcuser' => 'Application\Controller\UserController', ), ),
Ce qui fait que lorsque ZfcUser va récupérer son contrôleur avec la clé "zfcuser", il va maintenant récupérer non plus le contrôleur de base de ZfcUser, mais le tiens.
Pré-requis pour que ceci fonctionne : il faut que ton module, dans le fichier application.config.php, soit déclaré APRES celui de ZfcUser, afin que la config de ton module écrase celle de ZfcUser.
Hors ligne
Bonjour,
Ok par contre ça implique de changer le nom du controller UserController, ainsi que de copier les fichiers views sur notre application.
Merci
Joyeux noél à tous.
Hors ligne