0

@Route我的控制器方法有以下注释:

/**
 * @Route("/{id}/edit", name="section_edit")
 * @Route("/{id}/duplicate", name="section_duplicate")
 * @Method({"GET", "POST"})
 * @Template
 */
public function editAction(Request $request, $id)
{
}

是否有可能发现,调用了哪条路线?edit还是duplicate

我这样做是因为两条路线的逻辑相似。我可以创建两个操作,它们将使用指定的参数调用相同的方法,但我想知道是否可以使用一种方法来执行此操作并使用/值定义一些$method参数。editduplicate

4

1 回答 1

0

解决方案非常简单 - 添加defaults与模式无关 - 如下:

/**
 * @Route("/{id}/edit", name="section_edit", defaults={"method" : "edit"})
 * @Route("/{id}/duplicate", name="section_duplicate", defaults={"method" : "duplicate"})
 * @Method({"GET", "POST"})
 * @Template
 */
public function editAction(Request $request, $id, $method)
{
    var_dump($method); // gives `edit` or `duplicate`
}
于 2013-01-07T11:02:28.463 回答