我如何可以在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 

我怎样才能让这两条路线工作?

尝试去site/user (注意结束时没有反斜杠)。

一般来说,它应该工作,我有相对类似的configuration工作。

但是,如果一切都失败了,你总是可以定义多个路由相同的行动,即

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

使用yml文件进行路由configuration,并在路由参数中为id添加默认值,如下所示:

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

在这里看文档

你也可以用GET参数来做,例如

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