如何使用PATCH HTTP方法从请求对象获取JSON格式的表单内容?

时间:2019-07-16 13:14:14

标签: php json forms symfony http

我正在尝试从symfony中的请求对象检索JSON中的表单数据。我熟悉使用POST和GET方法,以及使用$request->request->get('something')检索数据,但这不适用于PATCH。 (返回null,表示“某物”下不存在任何内容。)

使用以下命令转储变量的内容时 var_dump($request->getcontent()); 我的JSON显示在一些XML标记之后,但我无法提取它。

有什么方法可以像使用POST方法那样轻松获得它吗?

$form =$this->createForm(ProjectUpdateType::class, $project);
$data = json_decode($request->request->get('project'),true);
$form->submit($data, true);

$data使用此方法为空,因为 $request->request->get('project')null。 但是正如我所提到的,JSON在某个地方,但是我不知道如何提取它。 预先谢谢你!

<pre class='xdebug-var-dump' dir='ltr'> 
    <small>/vagrant/src/Controller/ProjectController.php:129:</small>
    <small>string</small> 
        <font color='#cc0000'>'-----------------------------100229165918779178541068782244&#13;&#10;Content-Disposition: form-data; name=&quot;project&quot;&#13;&#10;&#13;&#10;{&quot;title&quot;:&quot;newTitle&quot;,&quot;description&quot;:&quot;NewDescription&quot;,&quot;priority&quot;:false}&#13;&#10;-----------------------------100229165918779178541068782244--&#13;&#10;'</font> 
        <i>(length=244)</i> 
</pre>

1 个答案:

答案 0 :(得分:0)

JSON存在于主体中,$request->getContent()是获取它的唯一正确方法。这里的问题不在于您无法获取JSON-而是响应中包含的内容不只是JSON对象,换句话说,就是无效的JSON。但是,如果实际上使用的API应该在XML文档中返回JSON,那么您必须首先解析该XML,例如使用SimpleXML