如何将 slug 移动到 Symfony3 中的子域
How to move slug to subdomain in Symfony3
我有一个网络应用程序,每个用户都有自己的个性化 link
https://app.myapp.com/{uuid}/frontpage
其中 uuid
表示从数据库加载的用户资源。
现在,我的想法是将 /{uuid}/
移动到子域,因此它应该如下所示:
https://{uuid}.myapp.com/frontpage
虽然我已经创建了通配符 DNS 并且可以轻松地在 Symfony 的控制器中提取子域,问题 现在是如何告诉 Symfony uuid
现在应该从子域中获取.
在控制器中,我将路由定义如下
/**
* @Route("/{uuid}/frontpage", name="frontpage")
* @ParamConverter("user", class="AppBundle:User", converter="converter.user")
* @Template("FrontPage.html.twig")
*/
public function indexAction(Request $request, User $user)
{
}
我想避免重写所有控制器并删除 /{uuid}/
部分,因为我有数百个这样定义的控制器。
有没有办法通过监听器来管理这个?
使用 Symfony 3,您可以根据主机匹配路由。基本上你也可以 "placeholderize" 你的子域并在你的 HttpFoundation\Request
对象中获取相关值(例如在你的控制器中)。
例如。 :
mobile_homepage:
path: /
host: "{subdomain}.example.com"
defaults:
_controller: AppBundle:Main:mobileHomepage
subdomain: m
https://symfony.com/doc/current/routing/hostname_pattern.html
我有一个网络应用程序,每个用户都有自己的个性化 link
https://app.myapp.com/{uuid}/frontpage
其中 uuid
表示从数据库加载的用户资源。
现在,我的想法是将 /{uuid}/
移动到子域,因此它应该如下所示:
https://{uuid}.myapp.com/frontpage
虽然我已经创建了通配符 DNS 并且可以轻松地在 Symfony 的控制器中提取子域,问题 现在是如何告诉 Symfony uuid
现在应该从子域中获取.
在控制器中,我将路由定义如下
/**
* @Route("/{uuid}/frontpage", name="frontpage")
* @ParamConverter("user", class="AppBundle:User", converter="converter.user")
* @Template("FrontPage.html.twig")
*/
public function indexAction(Request $request, User $user)
{
}
我想避免重写所有控制器并删除 /{uuid}/
部分,因为我有数百个这样定义的控制器。
有没有办法通过监听器来管理这个?
使用 Symfony 3,您可以根据主机匹配路由。基本上你也可以 "placeholderize" 你的子域并在你的 HttpFoundation\Request
对象中获取相关值(例如在你的控制器中)。
例如。 :
mobile_homepage:
path: /
host: "{subdomain}.example.com"
defaults:
_controller: AppBundle:Main:mobileHomepage
subdomain: m
https://symfony.com/doc/current/routing/hostname_pattern.html