Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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.
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 :
["id=1\u0026login=lucie"]
Merci d'avance.
Dernière modification par lucie (18-03-2013 16:16:28)
Hors ligne
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
par défaut on utilise ceci :
$this->getRequest()->getPost($param,$default);
sinon, l'utilisant du plugin params() cité par Orkin est plus élégante:
$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
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
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
C'est ça.
Hors ligne
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.
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
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
Hors ligne
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
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
[lang=php] public function update($id, $data) { var_dump($data); var_dump($id); return new JsonModel(); }
Voilà ce qu'elle me renvoi :
array(1) { ["name"] = > string(6)"azerty" } string(1)"1" []
Hors ligne
Je vais teste avec une autre extension et je te dis...
Hors ligne
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
C'est bon
Le problème venait bien de l'extension Ouffff je me sens rassurée.
Merci à tous.
Hors ligne
Ouf ! Tant mieux alors . Problème clos !
Hors ligne
Pages: 1