Я хотел бы найти мой лиц по запросу. Все хорошо с моей серверной стороной работы. Я проверял в почтальоне, что ссылка / чел / запрос работает хорошо, конечно, когда я добавляю? name = aaa, это работает хорошо. Но проблема в моем коде Symfony, когда я нажимаю на Поиск Кнопка дала мне список всех людей, например, если ничего не работает, поэтому после сброса переменной я обнаружил, что проблема заключается в теле переменной, которое я использую, я пытался изменить его, но он не работает. Вот мой код:
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 / Twig
<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 = $serializer->serialize($person, 'json');
От:
$var = $serializer->serialize($person, 'json');
$body = Json_decode($var , true);
Проблема заключалась в том, что я не конвертировал свой JSON в массивы, вот что json_decode Функция сделать.
Других решений пока нет …