FOSRestBundle 및 JMSSerializerBundle 사용 here과 같이 \FOS\RestBundle\Serializer\Normalizer\FormErrorHandler
을 통해 예외로 포장 된 잘못된 양식을 가져올 수 없습니다. 대신 상기 URL에 기재된 같은 JSON 객체를 포함하는 HTTP 응답FOSRestBundle을 사용할 때 올바르지 않은 양식이 정상화되지 않습니다.
(예를 들어 code
, message
및 errors
키), I 폼 객체 (I는 JMSSerializerBundle 등록한)의 직렬화 된 JSON 표현을 참조. HTTP 상태는 응답 (400) JSON으로 설정됩니까 :
{
"children": {
"title": {},
"sourceAddress": {
"errors": [
"This value should not be blank."
]
},
"payload": {}
}
}
관련 설정 및 코드 :
config.yml :
fos_rest:
view:
view_response_listener: 'force'
formats:
json: true
format_listener:
rules:
- { path: ^/, fallback_format: json }
exception:
enabled: true
컨트롤러 조치 :
public function postCampaignsAction(Request $request)
{
$campaign = new Campaign();
$form = $this->createForm(CampaignType::class, $campaign);
$form->submit($request->request->all());
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($campaign);
$em->flush();
return View::createRouteRedirect('get_campaign', [
'campaign' => $campaign->getId(),
]);
}
return $form;
}
도움을 주시면 감사하겠습니다. :)
편집 : FOSRestBundle/Resources/config/serializer.xml
이미 포함되어 있기 때문에,이 비록 필요한 이유
parameters:
jms_serializer.form_error_handler.class: FOS\RestBundle\Serializer\Normalizer\FormErrorHandler
이해가 안 : 나는 parameters.yml
이를 추가하여 원하는 결과를 얻을 관리했습니다
<parameters>
<!-- Override the default jms FormErrorHandler -->
<parameter key="jms_serializer.form_error_handler.class">FOS\RestBundle\Serializer\Normalizer\FormErrorHandler</parameter>
</parameters>
FOSRestBundle의 버그 일 수 있습니까?