Symfony - 仅在开发中定义路由。环境

时间:2015-01-31 15:56:11

标签: symfony configuration routing yaml

我使用SF2并创建了一些帮助调试项目的路线:

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

问题是这条路线在投入生产时绝不可以到达。

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

你能帮帮我吗?

感谢您的帮助!

4 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

我自己也有类似的问题,因为我想创建一个"系统由于维护而暂时停机" -page这将完全禁止我的网站在prod-environment中,因为我使用dev-environment来制作确保在将更新部署到生产服务器后一切正常。我认为这是否是一个好的做法是值得商榷的,但无论如何......

Leto对前一个回答的评论让我知道如何解决它,我想我已成功设法让我的路线只能在开发环境中工作,如下:

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

问题不在于只在dev环境中启用路由,如果我没有遗漏任何明显的事情,可以通过如下更改条件来完成:

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

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

也许在您想要在开发环境中启用路线的情况下,只有JonaPkr已提供的答案才是最佳做法。

答案 2 :(得分:1)

如前所述,您可以通过将'condition'指令添加到路由定义来定义条件路由。如果您需要限制适当环境的路由,可以直接检查%kernel.environment%参数值。例如:

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

答案 3 :(得分:1)

仅适用于希望与annotation系统一起使用的人:

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