Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-06-2010 16:16:42

Wiinner
Membre
Date d'inscription: 31-03-2010
Messages: 26

Webservice

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 :

Code:

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

Code:

<?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 wink
Voila, je suis perdu, et là je m'arrache les cheveux, donc j'espère avoir rapidement de vos nouvelles.

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