当我尝试在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
它运行良好。如果我将路径更改为模式:/ main / {page} / {ads_on_page} /它运作良好。
问题是什么?
我想问一下,有人会尝试这样做[例如pattern:/ a / b / defaults:{... a:1,b:2},或者他认为你应该在他的项目中做到这一点,并且看到它是一个常见的问题......
答案 0 :(得分:2)
我设法通过使用默认参数定义两个指向相同控制器的路由来完成类似工作。就我而言,使用注释:
/**
* @Route("/products/{catId}/{prodId}", defaults={"catId"="", "prodId"=""})
* @Route("/products/")
* @Template()
*/
public function indexAction($catId = null, $prodId = null) {
...
我认为只使用默认参数,Symfony会期望两个/.
HTH
答案 1 :(得分:1)
我认为您忘记将这两个参数传递给控制器中的IndexAction()。
试试此代码
Public function indexAction($page,$ads_on_page)
{}
希望这会对你有所帮助。