47

我在下面有这段代码:

/**
 * 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

我怎样才能让两条路线都有效?

4

3 回答 3

80

尝试转到site/user(注意末尾没有反斜杠)。

一般来说它应该可以工作,我有相对相似的配置工作。

但是,如果所有其他方法都失败了,您始终可以为同一操作定义多个路线,即

/**
 * Lists all User entities.
 *
 * @Route("/", name="user_no_cid")
 * @Route("/{cid}", name="user")
 * @Template()
 */
public function indexAction($cid=null)
{
于 2012-08-16T07:04:03.837 回答
38

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

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

在此处查看文档

于 2012-08-16T07:01:17.007 回答
7

您也可以使用 GET 参数来执行此操作,例如

/**
 * @param Request $request
 *
 * @return Response
 */
public function displayDetailAction(Request $request) : Response
{
    if ($courseId = $request->query->get('courseId')) {
于 2016-01-13T11:40:03.260 回答