![](/img/trans.png)
[英]Symfony 3(FOSrestBundle) + Angular 1 POST request is empty
[英]Symfony FOSRestBundle POST request 500 error
我正在嘗試使用FOSRestBundle創建實體。
網址:
POST http://localhost:8000/app_dev.php/api/links
請求有效負載:
{"link":{"id":"5","title":"foo","description":"foo","url":"foo","image":null,"issue":"1","creator":"1"}
}
這是控制器(生成的):
/**
* Create a Link entity.
*
* @View(statusCode=201, serializerEnableMaxDepthChecks=true)
*
* @param Request $request
*
* @return Response
*
*/
public function postAction(Request $request)
{
$entity = new Link();
$form = $this->createForm(new LinkType(), $entity, array("method" => $request->getMethod()));
$this->removeExtraFields($request, $form);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $entity;
}
return FOSView::create(array('errors' => $form->getErrors()), Codes::HTTP_INTERNAL_SERVER_ERROR);
}
我得到這個500錯誤,這確實沒有幫助:
{"formErrorIterators":{"errors":{"form":{"children":{"title":[],"type":[],"summary":[],"description":[],"url":[],"image":[],"date":{"children":{"date":{"children":{"year":[],"month":[],"day":[]}},"time":{"children":{"hour":[],"minute":[]}}}},"creator":[],"issue":[]}},"errors":[]}}}
我認為$ Request的發送或接收不正確,因為在某些時候我取消了csrf保護,並且Doctrine想創建一個只有空字段的Entity。
這是我的config.yml:
fos_rest:
routing_loader:
default_format: json
param_fetcher_listener: true
body_listener:
array_normalizer: fos_rest.normalizer.camel_keys
body_converter:
enabled: true
format_listener:
rules:
- { priorities: ['json'], fallback_format: json, prefer_extension: false }
view:
view_response_listener: force
有什么想法嗎 ? 謝謝
好的,原來有幾個錯誤:
首先,JSON有效負載格式錯誤:
{"title":"foo","summary":null,"description":"foo","url":"foo","image":null,"issue":"1","creator":"1"}
(我刪除了節點的名稱)
然后,類型描述符不正確:
$builder
->add('title', 'text')
->add('type', 'text')
->add('summary', 'text')
->add('description', 'text')
->add('url', 'text')
->add('image', 'text')
->add('date', 'date')
->add('creator', 'entity', array(
'class' => 'AppBundle:User')
)
->add('issue', 'entity', array(
'class' => 'AppBundle:Issue')
)
;
我添加了類型和實體以使其正常。
我本來會更高興使用更精確的錯誤代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.