2012-08-16 42 views
38

我有下面這段代碼:我怎麼能在Symfony2的路線可選參數

/** 
* Lists all User entities. 
* 
* @Route("/{cid}",defaults={"cid" = null},name="user") 
* @Template() 
*/ 
public function indexAction($cid=null) 
{} 

現在,如果我輸入site/user/1那麼它的工作原理,但如果我鍵入site/user/它說:

No route found 

如何我可以讓這兩條路線工作嗎?

回答

60

及早去site/user(注意沒有反斜槓最後)。

一般它應該工作,我有相對類似的配置工作。

但如果一切都失敗了,你總是可以定義多個路線相同的作用,即

/** 
* Lists all User entities. 
* 
* @Route("/", name="user_no_cid") 
* @Route("/{cid}", name="user") 
* @Template() 
*/ 
public function indexAction($cid=null) 
{ 
33

使用您的路由配置的YML文件,並在你的路由參數添加了ID的默認值是這樣的:

user: 
    pattern: /site/user/{id} 
    defaults: { _controller: YourBundle:Default:index, id: 1 } 

查看文檔here

+3

的OP顯然是在利用路線註釋在控制器 – phpguru 2016-01-29 01:03:34

+7

然而,他的回答讓我和其他幾個人對未來 – Andrew 2016-06-08 23:35:59

+3

注意:'pattern'關鍵是在Symfony的3 – 2016-09-05 21:03:03

5

你也可以用GET參數做到這一點,例如

/** 
* @param Request $request 
* 
* @return Response 
*/ 
public function displayDetailAction(Request $request) 
{ 
    if ($courseId = $request->query->get('courseId')) {