Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Voila, je souhaiterai savoir comment faire pour accéder aux fonctions d'un Controller "parent" ?
Mon exemple est le suivant: J'ai un controller nommé "IndexController.php" avec quelque actions et functions à l'intérieur.
Maintenant, depuis celui-ci, je souhaiterai accéder à la fonction "__test()" du controller "ForumController.php", afin de récupérer la valeur de retour (return $test;) pour l'utiliser dans IndexController.
Est-ce que ce sont les helper qui permettent cela, ou existe-il une solution plus simple, style:
parent::$this->__test()
Merci d'avance.
Hors ligne
bonjour,
a mon avis ce n'est pas la bonne méthode.
ton action test doit appeller des objets qui font les traitments metiers et retournent les valeurs.
Dans ton index tu appelle le même objet metier pour avoir le même resultat.
une action d'un contrôleur ne doit pas faire de retour (a première vue).
Ber
Hors ligne
Une action (indexAction() par exemple) pas mais une méthode du contrôleur peut très bien faire un retour (getModel() ou getForm()). Mais il est clair que le contrôleur n'a pas pour but de contenir la logique métier de l'application mais simplement de permettre l'accès à ces outils.
A mon goût, soit la méthode n'a rien à voir avec le contrôleur donc on crée une classe extérieure qu'on peut appeler partout, également dans le cas où on a besoin d'une instanciation.
On peut également créer une aide d'action depuis Zend_Controller_Action_Helper_Abstract dans le cas où on a pas vraiment besoin d'une classe mais simplement d'une méthode.
Soit elle à un rapport avec tous les contrôleurs de l'application et à ce moment là on peut surcharger Zend_Controller_Action et redéfinir des méthodes (preDispatch() par exemple). Les contrôleurs doivent ensuite hériter de cette nouvelle classe plutôt que de Zend_Controller_Action.
Hors ligne
keilmoth +1
A+JYT
Hors ligne
Alors merci à vous deux, pour vos réponses, j'en attendais pas autant surtout durant un nouvel an.
En effet, un controller n'est pas sensé renvoyer une valeur, sauf à un viewer.
En l'occurrence, j'ai besoin de créer une classes, qui regroupe certaines fonctions types, que je suis sensé ré-utiliser à outrance dans mes codes. Par conséquent, j'ai créer une classes "Forum.class.php" dans mon rep "Controller". Ensuite, j'importe celle-ci dans mon IndexController.php.
Et voila, le tour et joué !
Merci encore à vous deux.
P.S: Bonne année!
Hors ligne
Badoux a écrit:
Par conséquent, j'ai créer une classes "Forum.class.php" dans mon rep "Controller". Ensuite, j'importe celle-ci dans mon IndexController.php.
les classes controlleurs dans le répertoire controlllueur, les classe metier dans le repertoire metier et les vaches seront bien gardées
Hors ligne
Oui, attention de pas tout mélanger. Dans ton répertoire Controller, il ne devrait pas y avoir autre chose que tes contrôleurs. Il est clair que tu peux la mettre n'importe où et l'inclure n'importe comment. Mais est-ce qu'on utilise pas le framework Zend justement pour que notre code soit plus maintenable ?
Si tu désires utiliser des librairies personnelles, mets les par exemple dans ton répertoire library ou models à la racine de ton projet ou de ton application.
Je ne connais pas ton code mais à mon avis tu devrais te pencher sur les aides d'action et les aides de vue...
Hors ligne