Php 忽略控制器Symfony中的参数

Php 忽略控制器Symfony中的参数,php,symfony,Php,Symfony,我正在学习symfony的书,我读到可以省略控制器()中的参数 我尝试过这种配置 我的路线 _demo: path: /{lastName} defaults: { _controller: AcmeDemoBundle:Demo:index} 还有我的控制器 public function indexAction(){ return $this->render('AcmeDemoBundle:Demo:index.html.twig'); } public f

我正在学习symfony的书,我读到可以省略控制器()中的参数

我尝试过这种配置

我的路线

_demo:
  path:     /{lastName}
  defaults: { _controller: AcmeDemoBundle:Demo:index}
还有我的控制器

public function indexAction(){
    return $this->render('AcmeDemoBundle:Demo:index.html.twig');
}
public function indexAction()
{
    return $this->render('AcmeDemoBundle:Demo:index.html.twig');
}
当我访问没有参数(lastName)的路由时

我得到这个错误

No route found for "GET /"
但在symfony的书中,我可以读到:

并非所有路由参数都需要是控制器上的参数

例如,如果姓氏对控制器不重要, 你可以完全忽略它:

我用的是symfony2.3
非常感谢

现在您没有带有
/
的路由,而是带有参数
/{param}

如果你访问

http://localhost:8000/app_dev.php/foo
您可以获得此路由,并且可以省略控制器中的参数

public function indexAction(){
    return $this->render('AcmeDemoBundle:Demo:index.html.twig');
}
public function indexAction()
{
    return $this->render('AcmeDemoBundle:Demo:index.html.twig');
}
参数在控制器中是可选的,而不是在路由中。然后,如果您想要
/
路由,您必须创建一个新路由

例如

你可以通过电话查询你的路线

php app/console router:debug

您可以读取所有路由

为了使路由从控制器中点击索引操作,您需要为
lastName
指定默认值:

_demo:
      path:     /{lastName}
      defaults: { _controller: AcmeDemoBundle:Demo:index, lastName: null}