symfony 如何 "wildcard everything" 路由

symfony how to "wildcard everything" route

我想通过以下方式在 Symfony 中创建一个路由:/admin/_api/*/admin/*。所以,总的来说,我想要一个像下面这样的配置:

/admin/_api/users
/admin/_api/posts
/admin/_api/comments
/admin/_api/* -> (AdminBundle:Error:api)
/admin/*  -> (AdminBundle:Error:html)

根据给定的配置,如果用户转到 /admin/_api/test,路由器将调度到 ErrorController::apiAction。如果用户转到 /admin/users,它将调度到 ErrorController:htmlAction

有办法实现吗?

也许可以根据要求尝试,在 routing.yml 中:

...
all your routes that should match first
...
admin_api_wildcard:
  pattern:  /admin/_api/{wildcard}
  defaults: { _controller: AdminBundle:Error:api }
  requirements:
      wildcard: .*

在较新的 symfony 版本中 patternpath 取代:

...
all your routes that should match first
...
admin_api_wildcard:
  path:  /admin/_api/{wildcard}
  defaults: { _controller: AdminBundle:Error:api }
  requirements:
      wildcard: .*