【问题标题】:Two optional variables in Symfony2 routingSymfony2 路由中的两个可选变量
【发布时间】:2012-05-12 10:06:45
【问题描述】:

当我尝试在 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}/ 它运行良好。
什么问题?
我想问一下,有人会尝试这样做[例如。模式:/a/b/ 默认值:{... a:1,b:2},或者他认为你应该这样做] 在他的项目中,看看这是不是一个常见的问题......

【问题讨论】:

    标签: symfony routing


    【解决方案1】:

    通过使用默认参数定义两个指向同一个控制器的路由,我设法使类似的工作。就我而言,使用注释:

    /**
     * @Route("/products/{catId}/{prodId}", defaults={"catId"="", "prodId"=""})
     * @Route("/products/")
     * @Template()
     */
    public function indexAction($catId = null, $prodId = null) {
        ...
    

    我认为仅使用默认参数,Symfony 会期望两个 /。

    HTH

    【讨论】:

      【解决方案2】:

      我认为您忘记将这两个参数传递给控制器​​中的 IndexAction()。

      试试这个代码

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

      希望对你有所帮助。

      【讨论】:

      • 用action的参数中的默认值初始化变量,然后试试。indexAction($page=1,$ads_on_page=2)
      • 谢谢,我试过了,但是没有用。错误出现在路由步骤上。所以系统没有到达控制器。
      猜你喜欢
      • 2014-09-17
      • 2013-02-24
      • 2012-07-29
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 2011-12-04
      • 1970-01-01
      相关资源
      最近更新 更多