2017-05-24 16 views
0

을 쿼리로 검색하고 싶습니다. 내 모든 서버 작업에 문제가 없습니다. 나는 우체부에서 링크/사람/쿼리을 추가 할 때 잘 작동하는지 확인 했습니까? name = aaa 잘 작동합니다. 하지만 문제는 내 심포니 코드에 있습니다. 클릭하면 검색 버튼은 아무 것도 작동하지 않는 것처럼 모든 사람의 목록을 제공합니다. 그래서 변수를 덤프 한 후 발견했습니다. 문제는 내가 사용하려고하는 변수 본문입니다. 그것은 작동하지만 작동하지 않습니다. 여기 내 코드입니다 :symfony3에서 Unirest를 사용하여 데이터 직렬화하기

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, 
     )); 
    } 

그렇지 않으면 내 파일의 흥미로운 부분입니다 Person.html/나뭇 가지

<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> 

그래서 난에 클릭 할 때 검색, 함수 "listAction"이 실행되지만 정확히 $ body이 좋지 않습니다.

답변

0

마지막으로 대답을 찾았습니다. 내 데이터를 직렬화 및 비 직렬화해야했습니다. 그래서 대체 단지했다 :

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

작성자 :

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

문제는 내가 Json_decode 함수가하는 일의 그 배열 내 JSON 변환하지 않은 것이 었습니다.