从 $_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的主要内容,如果未能解决你的问题,请参考以下文章

PHP $_GET与$_POST 变量

如何从 .POST HTTP 请求访问重定向的 URL 响应

使用单点条目 PHP 时定义 $_POST 变量

Instagram 是不是会阻止来自某些 IP 的 CDN URL 请求?

.NET httpClient Post请求,GET请求方法

如何使用curl GET而不是POST