IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Symfony 4.3 Parametre NULL lors d'un envoi d'une requete en POST


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2019
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Symfony 4.3 Parametre NULL lors d'un envoi d'une requete en POST
    Bonjour à tous, c'est encore moi...

    Ça fait deux jours que je m'arrache les cheveux la-dessus.

    Toujours dans mon apprentissage de Symfony dans le but de faire une API, j'ai un petit souci lorsque j'effectue un test de methode en POST avec Postman.

    Je m'explique mais d'abord voici mon code de mon controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
     
    namespace App\Controller;
     
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\Response;
    use FOS\RestBundle\Controller\FOSRestController;
    use FOS\RestBundle\Controller\Annotations as Rest;
     
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
     
    use App\Entity\Movie;
    use App\Form\MovieType;
     
    /**
     * Movie controller
     * @Route("/api", name="api_")
     */
     
    class MovieController extends FOSRestController
    {
       /**
        * List All Movie
        * @Rest\Get("/Movie")
        * @return Response
        */
        public function getMovieAction()
        {
            $rep = $this->getDoctrine()->getRepository(Movie::class);
     
            $movies = $rep->findAll();
     
            return $this->handleView($this->view($movies));
        }
        /**
         * create Movie
         * @Rest\Post("/Movie")
         * @param Request $request
         * @return Response
         */
        public function postMovieAction(Request $request)
        {
            $movie = new Movie();
            $form = $this->createForm(MovieType::class, $movie);
     
            $data = json_decode($request->getContent(), true);
            $form->submit($data);
     
            if ($form->isSubmitted() && $form->isValid()){
                $em = $this->getDoctrine()->getManager();
                $em->persist($movie);
                $em->flush();
                return $this->handleView($this->view(['status' => 'success'], Response::HTTP_CREATED));
            }
            return $this->handleView($this->view($form->getErrors()));
        }
    }
    Lorsque je fais ma requête avec Postman, j'ai ceci en réponse :

    An exception occurred while executing 'INSERT INTO movie (name, description) VALUES (?, ?)' with params [null, null]: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null
    Je comprends très bien ce que ça veut dire, en l'occurrence que je ne peux pas faire enregistrement dans ma BdD si mes paramètres sont NULL.

    Le problème c'est que je ne comprends absolument pas pourquoi ça ne récupère pas mes paramètres...

    Voici ce que j'envoie avec Postman :
    Nom : testApiPostman.png
Affichages : 1604
Taille : 176,7 Ko

    Est-ce que le
    pose problème ? On dirait bien que ça vient de là... Est-ce que je dois récupérer chaque params à la main ?

    Merci d'avance à ceux qui vont m'éclairer...

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Je me trompe peut-être car j'ai juste essayé de trouver les définitions des différentes méthodes sur le net mais il semblerait que $request->getContent() ne peut pas être utilisé dans le controller.

    Dans le controller, il faut soit appeler les champs un à un avec $request->request->get('name') ou alors utiliser $request->request->all().

    PS : En cherchant dans un projet que j'ai réalisé l'année dernière, j'avais écrit $request->all(), tout simplement

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2019
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup mais en fait ça fonctionne très bien...

    J'ai simplement très mal utilisé Postman...

    Comme c'est une requête POST, je devais "simplement" construire mon JSON directement dans le body et rajouter le header adéquat...

    Encore une fois, avoir la tête dans le guidon, ça n'aide pas...

    Merci quand même !

Discussions similaires

  1. Délai expiré lors de l'execution d'une requete sqlserver
    Par lc.soft dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 29/09/2015, 11h41
  2. Réponses: 4
    Dernier message: 13/09/2006, 16h53
  3. Réponses: 1
    Dernier message: 01/09/2006, 10h08
  4. Réponses: 2
    Dernier message: 30/05/2006, 09h02
  5. [ADO] Probleme lors de l'execution d'une requete...
    Par NoisetteProd dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/06/2004, 12h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo