Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-03-2013 16:14:49

lucie
Membre
Date d'inscription: 21-02-2013
Messages: 15

Récuperer des paramètres dans un controller Rest

Bonjour à toutes et à tous.

J'aimerais récupérer dans mon controller (qui étends AbstractRestfulController) des paramètres passés avec la méthodes POST.

Voici un extrait de mon controller.

Code:

lang=php

    /**
     * Create a new resource
     *
     * @param  mixed $data
     * @return mixed
     */
    public function create($data)
    {
        var_dump($data);
        var_dump($this->getRequest()->getContent());
        return new JsonModel(array($this->getRequest()->getContent()));
    }

Pour faire mes tests j'ai utilisé une extension Chrome qui s'appelle RestConsole (je ne pense pas que le problème vienne de là).

Depuis mon extension j'appelle donc mon url avec un certain nombre de paramètre et là malheureusement je n'arrive pas à y accéder.

la variable $data reste toujours vide.

Savez vous pourquoi ?

Pourtant le deuxieme var_dump m'affiche :

Code:

["id=1\u0026login=lucie"]

Merci d'avance.

Dernière modification par lucie (18-03-2013 16:16:28)

Hors ligne

 

#2 18-03-2013 17:39:30

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Récuperer des paramètres dans un controller Rest

Normalement avec $this->params() tu dois pouvoir récupérer tous les paramètres. Ensuite tu peux virer le $data en paramètre de fonction, les actions des contrôleurs n'en prennent pas.

Hors ligne

 

#3 19-03-2013 00:24:49

aromatix
Membre
Lieu: paris - agadir
Date d'inscription: 12-03-2013
Messages: 20
Site web

Re: Récuperer des paramètres dans un controller Rest

par défaut on utilise ceci :

Code:

$this->getRequest()->getPost($param,$default);

sinon, l'utilisant du plugin params() cité par Orkin est plus élégante:

Code:

$this->params()->fromPost('param',$default);

P.I. si tu utilise fromPost() sans paramètres tu récupère tous les paramètres sous forme de tableau

Hors ligne

 

#4 19-03-2013 00:33:19

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Récuperer des paramètres dans un controller Rest

aromatix a écrit:

par défaut on utilise ceci :

Code:

$this->getRequest()->getPost($param,$default);

Non le plugin params() est là pour ça. Pour éviter d'avoir à se poser la question si on est en GET ou POST. Avec cette méthode on ne peut récupérer que les paramètres POST

Hors ligne

 

#5 19-03-2013 09:16:59

aromatix
Membre
Lieu: paris - agadir
Date d'inscription: 12-03-2013
Messages: 20
Site web

Re: Récuperer des paramètres dans un controller Rest

Tu a raison !!!

params() récupère les paramètres des différentes sources : Post, Get , FILE, Header, Route


$this->params(’param’);
évite d'interroger si on est en POST ( getRequest()->isPost(), ... )  :

et renvoie les paramètres récupérables via:
$this->params()->fromPost($param);
$this->params()->fromQuery($param)
...
ou
$this->getRequest()->getPost()
$this->getRequest()->getQuery()
...

Hors ligne

 

#6 19-03-2013 09:45:07

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Récuperer des paramètres dans un controller Rest

C'est ça.

Hors ligne

 

#7 19-03-2013 10:10:59

lucie
Membre
Date d'inscription: 21-02-2013
Messages: 15

Re: Récuperer des paramètres dans un controller Rest

Merci pour vos réponses.

Le soucis c'est que j'ai testé la méthode d'Orkin elle ne fonctionne pas =S
Quelque soit la valeur passé en paramètre le résultat sera toujours null...
Même si je ne lui file pas de paramètre le résultat sera null également.

Code:

lang=php
return new JsonModel(array($this->params()));

Vous êtes sur qu'elle fonctionne pour un controller Rest ?

Si je vire $data j'ai une erreur qui me dit que j'ai mal implémenté les abstract méthodes de AbstractRestfulController.

N'est ce pas un problème de conf ?

Merci d'avance

Hors ligne

 

#8 19-03-2013 10:27:40

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Récuperer des paramètres dans un controller Rest

ah bah sur rest faut peut être le laisser. Là je sèche si Bakura passe par là il te répondra il maitrise mieux rest que moi big_smile

Hors ligne

 

#9 19-03-2013 10:33:33

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Récuperer des paramètres dans un controller Rest

Salut,

Si tu es dans un cas "POST", les données $data sont déjà extraites du tableau POST, donc si tu n'as rien, c'est vraisemblablement que le problème vient d'autre part. Appeler $this->params()->fromPost() est donc inutile.

Comment créés-tu ta requête avec l'extension Chrome ? Si problème il y a, il provient sûrement de là !

Hors ligne

 

#10 19-03-2013 10:35:07

lucie
Membre
Date d'inscription: 21-02-2013
Messages: 15

Re: Récuperer des paramètres dans un controller Rest

Je viens de tester avec les methods put/delete/get et tout marche correctement. Il n'y a vraiment que create qui pose soucis.

Voici un example de la méthode update

Code:

[lang=php]
    public function update($id, $data)
    {
        var_dump($data);
        var_dump($id);
        return new JsonModel();
    }

Voilà ce qu'elle me renvoi :

Code:

array(1) {
    ["name"] = > string(6)"azerty"
}
string(1)"1" []

Hors ligne

 

#11 19-03-2013 10:48:24

lucie
Membre
Date d'inscription: 21-02-2013
Messages: 15

Re: Récuperer des paramètres dans un controller Rest

Je vais teste avec une autre extension et je te dis...

Hors ligne

 

#12 19-03-2013 10:48:28

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Récuperer des paramètres dans un controller Rest

Ok. Donc ça c'est normal. Par contre c'est très bizarre que POST ne marche pas... Tu es sûr que quand tu créés ta requête avec l'extension Chrome, les données ne sont pas passées dans le Body (dans la requête PUT, les données sont extraites du Body) plutôt que vraiment comme paramètres POST ?

Hors ligne

 

#13 19-03-2013 10:57:42

lucie
Membre
Date d'inscription: 21-02-2013
Messages: 15

Re: Récuperer des paramètres dans un controller Rest

C'est bon big_smile
Le problème venait bien de l'extension Ouffff je me sens rassurée.


Merci à tous.

Hors ligne

 

#14 19-03-2013 11:09:08

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Récuperer des paramètres dans un controller Rest

Ouf ! Tant mieux alors smile. Problème clos !

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