symfony3 使用YAML进行路由

示例

路由配置包含在您的app/config/config.yml文件中,默认情况下是该app/config/routing.yml文件。

从那里,您可以链接到捆绑包中的自己的路由配置

# app/config/routing.yml

app:
    resource: "@AppBundle/Resources/config/routing.yml"

它还可能包含多个应用程序全局路由。

您可以在自己的捆绑包中配置路由,该路由可用于两个目的:

  • 与请求匹配,以便为该请求调用正确的操作。

  • 根据名称和路由参数生成URL。

以下是示例YAML路由配置:

# src/AppBundle/Resources/config/routing.yml

my_page:
    path: /application/content/page/{parameter}
    defaults:
        _controller: AppBundle:Default:myPage
        parameter: 42
    requirements:
        parameter: '\d+'
    methods: [ GET, PUT ]
    condition: "request.headers.get('User-Agent') matches '/firefox/i'"

这条路线被命名my_page,并调用myPageAction的DefaultController在AppBundle要求时。它具有一个parameter用默认值命名的参数。该值仅在与regex匹配时才有效\d+。对于此路由,仅接受HTTP方法GET和PUT。的condition是在路由将不匹配,除非用户代理头匹配Firefox中例如表达。您可以利用传递到表达式中的两个变量来执行表达式中所需的任何复杂逻辑:context(RequestContext)和request(Symfony Request)。

生成的参数值为10的路线可能看起来像/application/content/page/10。