php - 如何使用 PATCH HTTP 方法从请求对象中获取 JSON 格式的表单内容?
问题描述
我正在尝试从 symfony 中的请求对象中检索 JSON 格式的表单数据。我熟悉使用 POST 和 GET 方法,以及使用 检索数据$request->request->get('something')
,但这不适用于 PATCH。(返回 null,这意味着在 'something' 下不存在任何东西)。
当使用我的 JSON 转储变量的内容时,
var_dump($request->getcontent());
会出现在一些 XML 标记之后,但我无法提取它。
有什么方法可以让我轻松获得它,比如使用 POST 方法时?
$form =$this->createForm(ProjectUpdateType::class, $project);
$data = json_decode($request->request->get('project'),true);
$form->submit($data, true);
$data
使用此方法变为 null,因为
$request->request->get('project')
is null
。但正如我提到的,JSON 存在于某个地方,但我不知道如何提取它。先感谢您!
<pre class='xdebug-var-dump' dir='ltr'>
<small>/vagrant/src/Controller/ProjectController.php:129:</small>
<small>string</small>
<font color='#cc0000'>'-----------------------------100229165918779178541068782244 Content-Disposition: form-data; name="project" {"title":"newTitle","description":"NewDescription","priority":false} -----------------------------100229165918779178541068782244-- '</font>
<i>(length=244)</i>
</pre>
解决方案
JSON 存在于正文中,并且$request->getContent()
是获取它的唯一正确方法。这里的问题不在于您无法获取 JSON - 而是响应包含的不仅仅是 JSON 对象,或者换句话说,是无效的 JSON。但是,如果您使用的 API 实际上应该在 XML 文档中返回 JSON,那么您必须首先解析这个 XML,例如使用SimpleXML 。
推荐阅读
- scala - 将scala字符串转换为键值对
- django - django.db.utils.OperationalError: (1426, "为 'price' 指定了太大的精度 200。最大值为 65。")
- office-js - 在 Office.js 加载项中,默认浏览器中的 html 页面未打开
- python - 出现错误“rel_model”的意外值预期“模型”、“代理”、“延迟关系”或“自我”
- c++ - 互斥体实现,不支持测试和设置和 CAS 操作的硬件
- c# - 定义字符串而不是使用引号时拒绝访问路径
- powershell - 如何使用 wscript.shell 到 ALT+Tab?
- amazon-web-services - 如何在一个命令中从终端创建新的 API Gateway http 端点
- javascript - JS match string from right to left
- github - github页面上有现有主题,如何替换jekyll-theme?