Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bon, je comprends visiblement pas grand chose aux webservices, donc je viens vous demander de l'aide.
Alors voila, mon but serait de proposer des webservices, qui pourront être intérrogés par un serveur que je connais bien.
Et je voudrais que ces webservices soient intérrogés donc par le navigateur.
J'ai crée un controlleur Webservices :
<?php class WebservicesController extends Zend_Controller_Action { protected $_server; public function init() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); /* Initialize action controller here */ $this->_server = new Zend_Json_Server(); $this->_server->setClass('Application_Model_WebServices'); /* if ('GET' == $_SERVER['REQUEST_METHOD']) { // Indicate the URL endpoint, and the JSON-RPC version used: }*/ $this->_server->setTarget('/json-rpc.php') ->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2); $this->_server->setAutoEmitResponse(true); } public function indexAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $smd = $this->_server->getServiceMap(); $service = $smd->getService('delstudent'); $service->setOptions(array('setElv_id' => 1)); $this->getResponse() ->setHeader('Content-Type','application/json') ->appendBody($service); /* header('Content-Type: application/json'); //echo $service->toJson(); //$this->_server->handle(); echo print_r($service->getParams()); return;*/ }
Et la classe que j'expose comme vous pouvez le voir est Application_Model_WebServices :
<?php class Application_Model_WebServices { protected $_elv_id; public function setElv_id($elv_id) { $this->_elv_id = $elv_id; } /** * Fonction permettant de supprimer les informations d'un étudiants * @param string $id est l'identifiant d'un élève * @return int 1 */ public function delstudent($id) { return 1; } public function delclass($id) { return 2; } public function deletab($id) { return 3; } }
(Le code de la classe est quasi vide, mais je volais faire au plus simple pour test.
Alors mon problème est que par mon controlleur, la personne puisse appelé les webservice.
J'aimerais par exemple que "http://myfirstzendproject/Webservices?method=delstudent" appelle la méthode delstudent.
Là pour le moment, quand j'essaye d'accéder à cette classe, déjà çà essaye de me télécharger le fichier Webservices ... et que dans ce fichier, je n'ai pas le résultat de l'exécution du service, mais plutot son corps :
"{"delstudent":{"envelope":"JSON-RPC-1.0","transport":"POST","parameters":[{"type":"string","name":"id","optional":false}],"returns":"integer"}}"
Comment faire pour exécuter le code de ma classe ?
Et comment faire pour que çà ne me propose pas de télécharger le fichier.
ps : je voudrais pouvoir retourner le tout en Json
Voila, je suis perdu, et là je m'arrache les cheveux, donc j'espère avoir rapidement de vos nouvelles.
Hors ligne