Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-08-2009 16:50:54

bigstef67
Nouveau membre
Date d'inscription: 31-08-2009
Messages: 2

Vous êtes abonné à cette discussion. probleme avec le composant RE

bonjour
J'ai une table user qui contient un nom, un email et un hash de password.
Je veux creer un webservice sur cette ressource

J'ai configurer mon bootstrap comme ceci:
<code>

    //Initialisation du controleur frontale de l'application
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->setControllerDirectory($listeModule);
    $listModuleRest = array('administration' => array('user','team'));
    $restRoute = new Zend_Rest_Route($frontController, array(), $listModuleRest);
    $frontController->getRouter()->addRoute('rest', $restRoute);
    $frontController->throwExceptions(true);
    $frontController->dispatch();

</code>

Mon controller emplemente l'interface Zend_Rest_Controller
IL contient les fonctions suivantes: listAction, getAction, postAction, putAction, deleteAction.

Avec l'uri .../user j'obtient la liste des users
Avec l'uri .../user/:id ou .../user/:name j'obtient les details de l'utilisateur en question

Mais avec l'uri .../user +post de donnee j'ai ce message d'erreur:
"Fatal error: Call to a member function getHeader() on a non-object in C:\wamp\library\Zend\Rest\Route.php on line 165"

Si j'enleve $restroute du bootstrap l'erreur disparait mais .../user, .../user/:id ou .../user/:name ne fonctionne plus.
J'ai cherche sur google, j'ai essaye quelques trucs mais mon probleme persiste.
De plus je ne comprends pas le message d'erreur avec ce getHeader.
Merci pour votre aide.

Hors ligne

 

#2 31-08-2009 23:12:57

bigstef67
Nouveau membre
Date d'inscription: 31-08-2009
Messages: 2

Re: Vous êtes abonné à cette discussion. probleme avec le composant RE

J'ai corrige ce bug.
Dans le fichier route.php du package Zend_Rest, dans la function match a la ligne 162 il y a ce code:

Code:

[INDENT]
$requestMethod = strtolower($request->getMethod());
            if ($requestMethod != 'get') {
                if ($request->getParam('_method')) { 
                    $values[$this->_actionKey] = strtolower($request->getParam('_method')); 
                } elseif ( [color=Red]$this->_request->getHeader('X-HTTP-Method-Override')[/color] ) {
                    $values[$this->_actionKey] = strtolower($this->_request->getHeader('X-HTTP-Method-Override'));
                } else { 
                    $values[$this->_actionKey] = $requestMethod; 
                }
[/INDENT]

Le programmeur effectue un test sur la presence d'un entete. Mais $this->_request peut avoir la valeur null. Du coup php affiche une erreur fatale. Pour le corriger il faut ajouter un test sur l'existence de $this->_request
On obtient :

Code:

[INDENT]
$requestMethod = strtolower($request->getMethod());
            if ($requestMethod != 'get') {
                if ($request->getParam('_method')) { 
                    $values[$this->_actionKey] = strtolower($request->getParam('_method')); 
                } elseif ( [color=Red]$this->_request AND $this->_request->getHeader('X-HTTP-Method-Override')[/color] ) {
                    $values[$this->_actionKey] = strtolower($this->_request->getHeader('X-HTTP-Method-Override'));
                } else { 
                    $values[$this->_actionKey] = $requestMethod; 
                }
[/INDENT]

PHP n'affiche plus de message d'erreur.

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