从$ _POST请求中使用ParamConverter(而不是来自URL)

时间:2016-02-08 15:02:22

标签: php symfony annotations symfony-routing

是否可以使用Symfony2中的@ParamConverter注释将通过$ _POST请求发送的参数转换为实体?

symfony2文档中给出的所有示例都会从路径中定义的参数转换实体。

设置类似的东西:

/**
 * @Route("/")
 * @ParamConverter("user", class="BvStandardServiceBundle:User", options={"id" = "userId"})
 */
public function userAction(User $user)
{
}

如果我在userId $ _POST参数中使用id调用此路由,则会导致:

  

无法猜测如何从请求中获取Doctrine实例   信息。

2 个答案:

答案 0 :(得分:4)

不幸的是,symfony的paramConverter仅针对请求参数运行到网址:ParamConverter specification

框架直接使用URL参数来搜索param url和paramConverter之间的关联。如果您未在网址中使用参数,则引擎symfony将不会搜索与您的paramConverter的关联。

您还可以查看需要工作请求的kernel.event:Class : ParamConverterListener.php

答案 1 :(得分:-1)

我使用https://github.com/schmittjoh/JMSSerializerBundle将JSON数据转换为Doctrine ORM实体,然后将它们保存到DB。