【问题标题】:Route names starting with underscore in Symfony2Symfony2 中以下划线开头的路由名称
【发布时间】:2015-06-08 12:47:52
【问题描述】:

我正在开发一个 Symfony2 项目,在文件 routing.yml 中我有以下几行:

_front:
    resource: routing_front.yml

_admin:
    resource: routing_admin.yml
    prefix:   /admin

所以这实际上允许在单独的专用文件中定义前端和后端的路由。

但是名字呢?下划线开头是简单的命名约定 - 乍一看会告诉实际路由在不同的文件中 - 还是对框架如何处理这些有影响?

【问题讨论】:

    标签: symfony symfony-routing


    【解决方案1】:

    这只是一个命名约定。

    但框架将通过匹配定义的第一个路由与请求的匹配 url 来处理路由,然后是第二个,依此类推......

    因此,在您的情况下,即使您请求http://www.mysyte.com/admin/whatever,它也会将此网址与routing_front.yml 中的所有路由匹配,然后再将它们与routing_admin.yml 匹配

    【讨论】:

      【解决方案2】:

      当您在 twig 模板中创建链接时,这些名称变得特别有用 - 您可以根据路由名称生成绝对 URL,而不是对 URL 进行硬编码,例如:

      <a href="{{ url('_welcome') }}">Welcome page</a>
      

      如果你是一个对 Symfony 领域特别深的开发人员(这是一个约定),下划线使它更明显是一条路线,但它们本身绝对不是必需的

      【讨论】:

      • 一般来说,绝对不推荐在路由名称前加上下划线!正如公认的答案所暗示的那样,前缀路由名称是一种约定,用于标记“私有”路由,例如探查器,这并不意味着在用户空间中“实际”使用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 2014-12-13
      • 2015-09-05
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多