【问题标题】:Symfony - Defining a route only in dev. environmentSymfony - 仅在 dev 中定义路线。环境
【发布时间】:2015-01-31 15:56:11
【问题描述】:

我正在使用 SF2,并创建了一些有助于调试项目的路线:

widget_debug_page:
    path:       /debug/widget/{widgetName}
    defaults:   { _controller: WidgetBundle:Debug:default }

问题是这条路线在投入生产时必须永远不可到达。

我找不到指定环境的参数。

【问题讨论】:

    标签: symfony configuration routing yaml


    【解决方案1】:

    仅适用于想要使用annotation 系统的人:

    /**
     * @Route("/my-route", condition="'dev' === '%kernel.environment%'")
     */
    public function index() {}
    

    【讨论】:

      【解决方案2】:

      您可以在 routing_dev.yml (Symfony 2/3) 中添加您的路由,或者在 config/routes/dev/ (Symfony 4) 中创建一个仅用于开发的路由文件。

      【讨论】:

      【解决方案3】:

      如前所述,您可以通过在路由定义中添加“条件”指令来定义条件路由。如果您需要针对适当的环境限制路由,您可以直接查看%kernel.environment% 参数值。例如:

      widget_debug_page:
          path:       /debug/widget/{widgetName}
          defaults:   { _controller: WidgetBundle:Debug:default }
          condition:  "%kernel.environment% === 'dev'"
      

      【讨论】:

        【解决方案4】:

        我自己也遇到了类似的问题,因为我想创建一个“系统因维护而暂时关闭”-页面,该页面将在 prod 环境中完全禁用我的网站,因为我使用 dev-environment 确保之后一切正常将更新部署到我的生产服务器。我想这是否是好的做法值得商榷,但无论如何......

        Leto 对先前答案的评论让我知道了如何解决它,我认为我已经成功地使我的路线只在开发环境中工作,如下所示:

        default_update_view:
            path:     /{route}
            defaults: { _controller: WalanderBundle:Default:maintenanceInfo }
            condition: "request.getScriptName() == '/app.php'"
            requirements:
                route: .+
        

        不,问题是只在开发环境中启用一条路由,如果我没有遗漏任何明显的东西,则可以通过如下更改条件来完成:

        condition: "request.getScriptName() == '/app_dev.php'"
        

        希望这会有所帮助,虽然问题有点老了!

        也许在你想在开发环境中启用路由的情况下,只有JonaPkr 已经提供的答案是最佳实践。

        【讨论】:

          猜你喜欢
          • 2011-01-06
          • 2019-07-31
          • 1970-01-01
          • 2019-06-29
          • 2014-05-27
          • 2018-11-20
          • 2015-08-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多