2013-01-07 28 views
0

我有以下为我控制器的方法@Route annottations:有两个路由创建一个控制器的方法 - 所谓区分路线

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

是否有可能发现,哪条路线被称为? editduplicate

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

回答

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` 
} 
相关问题