Php 如何定义一次复杂的正则表达式并在多个路由中重用它们

Php 如何定义一次复杂的正则表达式并在多个路由中重用它们,php,symfony,symfony5,Php,Symfony,Symfony5,在我的Symfony5.1应用程序中,有许多路由使用正则表达式,如下所示: /** *@Route(“/foo/{page}”,name=“foo”,methods=“GET”) */ 公共功能列表(int$page=1):响应 { // ... } 用户表示可以使用container参数: 路由需求(以及路由路径)可以包括,这对于一次性定义复杂正则表达式并在多个路由中重用它们非常有用 我在services.yaml文件中创建了一个参数: 参数: 页面:“” 但是如何在路线注释中调用上述参数

在我的Symfony5.1应用程序中,有许多路由使用正则表达式,如下所示:

/**
*@Route(“/foo/{page}”,name=“foo”,methods=“GET”)
*/
公共功能列表(int$page=1):响应
{
// ...
}
用户表示可以使用container参数:

路由需求(以及路由路径)可以包括,这对于一次性定义复杂正则表达式并在多个路由中重用它们非常有用

我在
services.yaml
文件中创建了一个参数:

参数:
页面:“”
但是如何在路线注释中调用上述参数

我试过但没有成功:

  • @Route(“/foo/{page}”,name=“foo”,methods=“GET”)
  • @Route(“/foo/{page}”,name=“foo”,methods=“GET”,requirements=env:page)
  • @Route(“/foo/{page}”,name=“foo”,methods=“GET”,requirements={“page”=page})
  • @Route(“/foo/{page}”,name=“foo”,methods=“GET”,requirements={“page”=参数:page})
  • @Route(“/dogs/{page}”,name=“dogs”,methods=“GET”)
  • @Route(“/foo/{page}”,name=“foo”,methods=“GET”,requirements={“page”=%env(page)%})
最后两个没有返回404错误,但是:在路由配置中不允许使用“%env(page)%”

如何在路线注释中调用我的参数?

您的控制器:

    /**
     * @Route("/foo/{page<%page%>}", name="foo", methods="GET")
     */
    public function list(int $page = 1): Response
    {
        // ...
    }
/**
*@Route(“/foo/{page}”,name=“foo”,methods=“GET”)
*/
公共功能列表(int$page=1):响应
{
// ...
}
参数.yaml

parameters:
  page: '^[1-9][0-9]*$' # Without `<` and `>`
参数:
页码:“^[1-9][0-9]*$”#无``
您的控制器:

    /**
     * @Route("/foo/{page<%page%>}", name="foo", methods="GET")
     */
    public function list(int $page = 1): Response
    {
        // ...
    }
/**
*@Route(“/foo/{page}”,name=“foo”,methods=“GET”)
*/
公共功能列表(int$page=1):响应
{
// ...
}
参数.yaml

parameters:
  page: '^[1-9][0-9]*$' # Without `<` and `>`
参数:
页码:“^[1-9][0-9]*$”#无``