Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-12-2008 15:49:53

Badoux
Membre
Date d'inscription: 25-03-2008
Messages: 32

Accéder aux functions d'un autre Controller ?

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:

Code:

parent::$this->__test()

Merci d'avance.

Hors ligne

 

#2 31-12-2008 16:38:44

Bebert
Membre
Date d'inscription: 30-04-2008
Messages: 51

Re: Accéder aux functions d'un autre Controller ?

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


Bertrand

Hors ligne

 

#3 31-12-2008 17:23:43

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: Accéder aux functions d'un autre Controller ?

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. smile

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.


Quelques tutoriaux Zend Framework !

Hors ligne

 

#4 01-01-2009 12:01:25

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Accéder aux functions d'un autre Controller ?

keilmoth +1
A+JYT

Hors ligne

 

#5 01-01-2009 20:13:23

Badoux
Membre
Date d'inscription: 25-03-2008
Messages: 32

Re: Accéder aux functions d'un autre Controller ?

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

 

#6 06-01-2009 17:17:12

Bebert
Membre
Date d'inscription: 30-04-2008
Messages: 51

Re: Accéder aux functions d'un autre Controller ?

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 wink


Bertrand

Hors ligne

 

#7 12-01-2009 00:17:31

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: Accéder aux functions d'un autre Controller ?

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 ? smile

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... wink


Quelques tutoriaux Zend Framework !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages