我使用SF2并创建了一些帮助调试项目的路线:
widget_debug_page:
path: /debug/widget/{widgetName}
defaults: { _controller: WidgetBundle:Debug:default }
问题是这条路线在投入生产时绝不可以到达。
我找不到指定环境的参数。
你能帮帮我吗?
感谢您的帮助!
答案 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() {}