【问题标题】:Is possible use prefix or const in a path of the route in symfony可以在 symfony 中的路由路径中使用前缀或常量
【发布时间】:2017-04-02 01:17:46
【问题描述】:

我试图看看如何在路由路径中添加前缀。

#routing.yml

app_news:
    path:     /panel/news
    defaults: { _controller: NewsBundle:Default:index }

我有一些这样的路线,如果我以后想更改路径的名称,例如

/admin/news/control/news

我可以将前缀保存在其他配置 yml 文件中并在需要时更改它吗?

【问题讨论】:

  • 这是捆绑包或应用程序的路由文件?
  • 您可以为包内的所有路由指定前缀,如here in the doc所述
  • 在路由文件中(一捆一路由文件)

标签: php symfony


【解决方案1】:

在这种情况下,我有一些这样的

#/app/config/routing.yml
users:
    resource:   "@UsersBundle/Resources/config/routing.yml"
    prefix:     /panel/

news:
    resource:   "@NewsBundle/Resources/config/routing.yml"
    prefix:     /panel/

现在,在阅读答案并查看我放置前缀的其他方式后,我将前缀设置在 var 中

#/app/config/routing.yml
users:
    resource:   "@UsersBundle/Resources/config/routing.yml"
    prefix:     %panel_path%

news:
    resource:   "@NewsBundle/Resources/config/routing.yml"
    prefix:     %panel_path%

我设置了 %panel_path% var 值

#/app/config/config.yml
parameters:
    panel_path: /panel

【讨论】:

  • 尽管这可能会起作用,但我强烈建议您使用 Symfony 工具而不是自行实现。这将使项目更易于维护。
【解决方案2】:

将所有带前缀的路由放在同一个路由文件中,然后使用 resourceprefix 属性将其添加到捆绑路由中:

applications:
     resource: "@NewsBundle/Resources/config/routing_news.yml"
     prefix: /panel

另外,如果您的控制器上有路由。您可以使用 annotation 属性执行相同的技巧:

applications:
     resource: '@NewsBundle/Controller/NewsController'
     type: annotation
     prefix: /panel

语法会根据您的 Symfony 版本而有所不同,因此我建议您访问 Symfony documentation

【讨论】:

    猜你喜欢
    • 2015-03-15
    • 2016-09-28
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 2013-01-05
    相关资源
    最近更新 更多