Symfony2路由中的两个可选变量

Symfony2路由中的两个可选变量,symfony,routing,Symfony,Routing,当我尝试在Symfony2路由中使用2个可选变量时,我遇到了一个错误:找不到“GET/”的路由 在routing.yml中,我有: AcmeAshavatBundle_homepage: pattern: /{page}/{ads_on_page}/ defaults: { _controller: AcmeAshavatBundle:Page:index, page:1, ads_on_page:2 } requirements: _method: GET|POST 当我进入htt

当我尝试在Symfony2路由中使用2个可选变量时,我遇到了一个错误:找不到“GET/”的路由 在routing.yml中,我有:

AcmeAshavatBundle_homepage:
pattern:  /{page}/{ads_on_page}/
defaults: { _controller: AcmeAshavatBundle:Page:index, page:1, ads_on_page:2 }
requirements:
   _method:  GET|POST
当我进入
http://localhost:8080/AshavatSy/web/app_dev.php/
我有错误。有趣的是,如果我运行
http://localhost:8080/AshavatSy/web/app_dev.php/1
效果很好。另外,如果我将路径更改为pattern:/main/{page}/{ads\u on\u page}/效果也很好。
有什么问题吗?

我想问,有人会在他的项目中尝试这样做[例如,模式:/a/b/默认值:{…a:1,b:2},或者他认为您应该这样做],然后看看这是一个常见问题吗…

我想您忘了将这两个参数传递给控制器中的IndexAction()

试试这个代码

Public function indexAction($page,$ads_on_page)
{}

希望这对您有所帮助。

我使用默认参数定义了两条指向同一控制器的路由,从而实现了类似的功能。在我的例子中,使用注释:

/**
 * @Route("/products/{catId}/{prodId}", defaults={"catId"="", "prodId"=""})
 * @Route("/products/")
 * @Template()
 */
public function indexAction($catId = null, $prodId = null) {
    ...
我认为,仅使用默认参数,Symfony会期望两个/


HTH

在操作的参数中使用默认值初始化变量,然后重试。indexAction($page=1,$ads_on_page=2)谢谢,我试过了,但没有用。错误发生在路由步骤上。因此,系统无法到达控制器。