从 $_POST 请求(不是来自 URL)使用 ParamConverter
Posted
技术标签:
【中文标题】从 $_POST 请求(不是来自 URL)使用 ParamConverter【英文标题】:Using ParamConverter from a $_POST request (not from URL) 【发布时间】:2016-05-18 07:06:59 【问题描述】:是否可以在 Symfony2 中使用 @ParamConverter 注解将通过 $_POST 请求发送的参数转换为实体?
symfony2 文档中给出的所有示例都从路由中定义的参数转换实体。
这样设置:
/**
* @Route("/")
* @ParamConverter("user", class="BvStandardServiceBundle:User", options="id" = "userId")
*/
public function userAction(User $user)
如果我在 userId
$_POST 参数中使用 id 调用此路由,则会导致:
无法猜测如何从请求中获取 Doctrine 实例 信息。
【问题讨论】:
您是否尝试在控制器签名上添加@Method("POST")?另一种方式可能是***.com/questions/31186731/… 使用自定义参数转换器stfalcon.com/en/blog/post/symfony2-custom-paramconverter 【参考方案1】:不幸的是,symfony 的 paramConverter 只为请求参数运行到 URL 中:ParamConverter specification
Framework 直接使用 URL 参数来搜索 param url 和 paramConverter 之间的关联。如果你没有在 URL 中使用参数,symfony 引擎将不会搜索与你的 paramConverter 的关联。
您也可以查看需要工作的 kernel.event :Class : ParamConverterListener.php
【讨论】:
【参考方案2】:我使用https://github.com/schmittjoh/JMSSerializerBundle 将 JSON 数据转换为 Doctrine ORM 实体,然后将它们保存到 DB。
【讨论】:
以上是关于从 $_POST 请求(不是来自 URL)使用 ParamConverter的主要内容,如果未能解决你的问题,请参考以下文章
如何从 .POST HTTP 请求访问重定向的 URL 响应
Instagram 是不是会阻止来自某些 IP 的 CDN URL 请求?