Symfony 3 - 根据主机名进行路由
Symfony 3 - routing depending on the host name
我正在尝试有条件地使用具有多域的路由。
我目前拥有的是:
admin_routes:
host: "admin.{domain}"
resource: "@AppBundle/Controller/Admin"
type: annotation
requirements:
domain: domain.local|domain2.local
defaults: { domain: domain.local }
user_routes:
host: "user.{domain}"
resource: "@AppBundle/Controller/User"
type: annotation
requirements:
domain: domain3.local|domain4.local
defaults: { domain: domain3.local }
两个文件夹中的控制器具有相同的路由名称,因为这是应用程序的构建方式。
由于应用程序仍在加载两条路线,因此上述内容无效。对于来自管理员的用户域 url 是构建的。
我正在努力实现的目标是完全可能的还是我完全以错误的方式做的?
最终我想要的是给定主机名的控制器集仅为 "visible"。
路由需要有唯一的名称。如果有 2 条同名的路由,一条将覆盖另一条。至于主机规范,这只影响路由是否匹配。类似路线要求。
您的问题的解决方案是在两个控制器中以不同的方式命名路由。如何实现这一目标的一件事是通过 Controller class 注释中的路由名称前缀。
/**
* @Route("/path", name="admin_")
*/
和
/**
* @Route("/path", name="user_")
*/
https://symfony.com/blog/new-in-symfony-3-4-prefix-all-controller-route-names
路由可以有相同的 /path
前缀,但它们的名称需要不同。这样他们就可以在不同的条件下匹配相同的路径。
我正在尝试有条件地使用具有多域的路由。
我目前拥有的是:
admin_routes:
host: "admin.{domain}"
resource: "@AppBundle/Controller/Admin"
type: annotation
requirements:
domain: domain.local|domain2.local
defaults: { domain: domain.local }
user_routes:
host: "user.{domain}"
resource: "@AppBundle/Controller/User"
type: annotation
requirements:
domain: domain3.local|domain4.local
defaults: { domain: domain3.local }
两个文件夹中的控制器具有相同的路由名称,因为这是应用程序的构建方式。 由于应用程序仍在加载两条路线,因此上述内容无效。对于来自管理员的用户域 url 是构建的。 我正在努力实现的目标是完全可能的还是我完全以错误的方式做的?
最终我想要的是给定主机名的控制器集仅为 "visible"。
路由需要有唯一的名称。如果有 2 条同名的路由,一条将覆盖另一条。至于主机规范,这只影响路由是否匹配。类似路线要求。
您的问题的解决方案是在两个控制器中以不同的方式命名路由。如何实现这一目标的一件事是通过 Controller class 注释中的路由名称前缀。
/**
* @Route("/path", name="admin_")
*/
和
/**
* @Route("/path", name="user_")
*/
https://symfony.com/blog/new-in-symfony-3-4-prefix-all-controller-route-names
路由可以有相同的 /path
前缀,但它们的名称需要不同。这样他们就可以在不同的条件下匹配相同的路径。