2017-05-24 1 views
0

Je voudrais rechercher mes personnes par requête. Tout va bien avec mon côté serveur de travail. J'ai vérifié dans le facteur que lien/personnes/requête fonctionne bien bien sûr quand j'ajoute? Name = aaa cela fonctionne bien. Mais le problème est dans mon code symfony, quand je clique sur Recherche bouton il m'a donné la liste de toutes les personnes comme si rien ne fonctionne donc j'ai découvert après la variable de vidange que le problème est le corps variable que j'utilise j'ai essayé de changer mais ça ne marche pas. Voici mon code:Sérialiser des données en utilisant Unirest dans symfony3

PersonController.php

public function listAction(Request $request) { 

    $serializer = new Serializer(
     array(new GetSetMethodNormalizer(), new ArrayDenormalizer()), 
     array(new JsonEncoder()) 
    ); 
    $headers = array('Accept' => 'application/json'); 
    $response = Unirest\Request::get(link/persons/',$headers); 
    $person = $serializer->deserialize($response->raw_body, 
    Person::class, 'json'); 
    $form = $this->createForm(PersonType::class, $person); 

    if ($request->isMethod('POST')) { 
     $form->handleRequest($request); 
     $headers = array('Accept' => 'application/json'); 
     //$body = json_encode($person); 
     $body = Unirest\Request\Body::multipart($person); 
     //$body = serialize($person); 
     dump($body); 
     $response = Unirest\Request::get('link/persons/query', 
     $headers,$body); 
     //$response = Unirest\Request::get('link/persons 
     // /query?firstName=aaa'); (this works well) 
     dump($response->body); 
     return $this->render('AppBundle:Person:PersonList.html.twig', 
     array (
      'form' => $form->createView(), 
      'persons' => $response->body, 
      )); 
    } 

    $response = Unirest\Request::get('link/persons/',$headers); 
    //$this->assertEquals(Response::HTTP_OK, $response->getStatusCode()); 
    if ($response->body == null) { 
     return $this->render('AppBundle:Person:PersonList.html.twig', 
     array (
      'form' => $form->createView(), 
      'persons' => $response->body, 
      )); 
    } 

    return $this->render('AppBundle:Person:PersonList.html.twig', 
    array (
     'form' => $form->createView(), 
     'persons' => $response->body, 
     )); 
    } 

Sinon, voici la partie intéressante de mon dossier Person.html/Brindille

<form novalidate="novalidate" method="post"> 
    {{ form_row(form.name) }} 
    {{ form_rest(form) }} 
    <div class="form-group col-md-offset-5"> 
     <button type="submit" class="btn btn-default">Search</button> 
    </div> 
</form> 

Alors, quand je clique sur Recherche, la fonction "listAction" est exécutée mais le problème est que mon $ body n'est pas le bon.

Répondre

0

Enfin, j'ai trouvé la réponse. J'ai dû sérialiser et désérialiser mes données. Donc, je venais de remplacer:

$body = $serializer->serialize($person, 'json'); 

Par:

$var = $serializer->serialize($person, 'json'); 
$body = Json_decode($var , true); 

Le problème était que je ne l'ai pas convertir mon JSON tableaux qui est ce que la fonction json_decode faire.