Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
j'aurais souhaiter savoir comment appeler une action d'un controller depuis une classe.
J'ai une classe que je met a disposition a travers un web service, et je souhaiterai que le client puisse appeler une action d'un controller de mon application.
J'ai vu qu'il était possible d'appeler une action d'un controller à partir d'un autre controller grace à la méthode _forward et donc je me demander si il n'était pas possible que je l'utilise.
J'espère que quelqu'un pourra répondre a mes questions.
merci d'avance
Hors ligne
A mon avis, ton projet est mal conçu. Tu ne devrais pas avoir à appeler une action sauf dans le context ou tu es déjà dans une action
Déporte le code de ton action dans une classe de Service et appel ce service depuis tes autres classes
Hors ligne
En fait, le but du projet est de rendre certains services d'une application existante disponible à travers un web service.
Par exemple retourner une liste de contact. Donc dans mon application de base j'ai un controller contact avec une action load, dont je souhaiterais mettre a disposition des clients grâce à une méthode call(je me suis inspiré du code de magento).
voici le fonctionnement du web service :
le client appel la méthode login( authentification et stock des donné en session, retourne l'id de sassion)
-> appel la méthode call, qui prend en parametre l'id de session, le controller et le nom de l'action qu'il souhaite utiliser
Il n'existe aucune possibilité pour que je puisse appeler l'action d'un controller à partir de ma fonction call?
Je ne connais pas très bien comment fonctionne les controller, mais je me demandais, si il était possible d'écrire une méthode dans un controller, autre qu'une action, dans le but de pouvoir l'appeler depuis ma classe qui contient ma méthode call.
Hors ligne
retourner une liste de contact ^^ exactement mon appli en cour
Hors ligne
Mais pourquoi écrire ton code dans Zend_Controller_Action ?
Tu me décris très bien ce que je t'ai proposé, mais tu ne le mets pas en œuvre.
Tu as un service pour gérer tes contacts dans ton controller et toutes tes autres actions (au hasard, webservice)
$contactService = new Contact_Service($paramètre1, $paramètre2); $contacts = $contactService->findAll(($paramètre1, $paramètre2);
Ton controller est dans un context MVC
Pour moi, ton code de webservice ne doit pas être dans ce contexte
(d'ailleurs, je suppose qu'il ne boostrap pas toutes ton app)
Tu as surement aussi une méthode login dans un service :
$serviceUser = new Service_User(); $serviceUser->login($paramètre1, $paramètre2);
as utilisé dans le webservice ou dans tes controller
Hors ligne
Mon web service ne se trouve pas dans un controller, mais je souhaite utiliser des actions de mon application.
Ce que tu me propose c'est de mettre le code de mes actions dans des classes de services?
Cela implique de revoir l'organisation de l'application, car je ne vais pas dupliquer du code juste pour le web service.
merci pour tes réponses
Hors ligne
Pages: 1