Symfony:具有不同参数的多个路由,默认为null

时间:2017-05-23 14:08:16

标签: symfony parameters routes type-hinting symfony-3.2

我正在忙着开发Symfony 3应用程序。

我需要知道是否可以采取由2条路线提供的行动:

  • 一个参数
  • 一个有2个参数

在第一种情况下,它将用于创建与给定实体相关联的新实体。 在第二种情况下,它将编辑与另一个给定实体相关联的现有和给定实体。

如果不清楚,请参阅我的例子:

/**
  * @Route("/admin/instances/{group}/reunions/nouveau", requirements={"group": "\d+"})
  * @Route("/admin/instances/{group}/reunions/{reunion}/modifier", requirements={"reunion": "\d+"})
  * @Method({"GET", "POST"})
  *
  * @param Request $request
  * @param Group   $group
  * @param Reunion $reunion
  *
  * @return Response
  */
 public function newEditAction(Request $request, Group $group, Reunion $reunion = null)
 {
     if (!$reunion) {
         // we know we are busy with a creation
     }
 }

尽管如此,除非包含实体的表为空,否则$reunion永远不会是null

由于两个实体Group和Reunion彼此相关(请参阅下面的关系),Symfony似乎会自动搜索与给定组关联的第一个Reunion实体。知道为什么吗?

Reunion.php

/**
 * @var \AppBundle\Entity\Group
 *
 * @ORM\ManyToOne(targetEntity="Group", inversedBy="reunions")
 * @ORM\JoinColumn(name="reunion_group_id", referencedColumnName="group_id")
 */
private $group;

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您应该有两条不同的路线。一个用于创建,仅接受POST请求,另一个用于接受PUT或PATCH请求的编辑。