簡體   English   中英

Symfony FOSRestBundle POST請求500錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM