theplankmeister/form-data-transposer

将请求中的 JSON 数据转换为表单数据。

1.0.4 2018-12-05 16:00 UTC

This package is auto-updated.

Last update: 2024-09-06 10:06:42 UTC


README

Build Status

在 Symfony 中将解码的 POSTed JSON 数据转换为表单数据请求参数

你可能遇到的情况是,你的 Symfony 应用可能不会接收到包含表单数据的 POST 请求,而是包含 JSON 数据,例如,如果你的前端发送的是 application/json 而不是实际的 HTML 表单的 XHR 请求。如果你使用 symfony/form 进行表单验证,你将注意到 Form::handleRequest(Request $request) 将会完全忽略 application/json 请求体中的 JSON 数据。

此监听器拦截 POSTed 的 application/json 请求,解码内容,并将解码数据中的每个属性/值应用到请求参数上。然后,在你的控制器操作中,Form::handleRequest(Request $request) 将会按预期工作,就像它接收了一个包含相同数据的标准的 application/x-www-form-urlencoded 请求一样。

与 Symfony 应用集成

在我能够发布一个 Symfony flex 食谱之前,你需要手动将 配置文件 复制到你的项目的配置目录中,或者手动将配置文件的内容复制到你的配置中。我只需要在 Symfony4 项目上使用它,所以如果你需要在使用旧版本时使用它,你非常欢迎提交一个带有适当依赖项更改的 PR。

构造函数参数

构造函数接受两个可选的布尔参数,$rethrowDecoderException$checkIsXmlHttpRequest,可以在服务定义中调整。$rethrowDecoderException 决定在解码 JSON 时捕获的异常是否应该被重新抛出。$checkIsXmlHttpRequest 决定是否在条件检查请求时调用 Request::isXmlHttpRequest()