使用两个路由创建一个控制器的方法 - 区分被叫路由

时间:2013-01-07 10:31:35

标签: php routing annotations symfony-2.1

我的控制器方法有以下@Route个公告:

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

是否有可能发现,哪条路线被召唤? editduplicate

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

1 个答案:

答案 0 :(得分: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`
}