如何在具有动态子域的树枝中生成正确的路由?
How to generate right route in twig with dynamic sub-domain?
我有一个基于子域的多租户应用程序可以正常工作,但我在 Twig 模板中生成 link 时遇到问题。
所有生成的 link 都在默认子域上,而不是当前子域
routes.yaml
app_customer:
resource: '../src/Controller/Customer/'
host: "{subdomain}.domain.com"
defaults:
subdomain: tenant1
requirements:
subdomain: tenant1|tenant2
SecurityController.php
class SecurityController extends AbstractController
{
/**
* @Route("/login", name="app_login", methods={"GET","POST"})
*/
public function login(AuthenticationUtils $authenticationUtils)
{
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('security/login.html.twig', [
'last_username' => $lastUsername,
'error' => $error,
]);
}
}
login.html.twig
<form action="{{ path('app_login') }}" method="post">...</form>
将始终生成 https://tenant1.domain.com/login
但是当前的 url 是 tenant2.domain.com
我相信它总是生成 https://tenant1.domain.com/login
,因为您将 "tenant1" 设置为 subdomain
的默认值,并且在调用 [=14= 时没有传递不同的值]
试试这个:
{% set currsubdomain = app.request.getHttpHost()|split('.')|first %}
<form action="{{ path('app_login', {subdomain: currsubdomain }) }}" method="post">...</form>
或者只是传递整个主机:
<form action="{{ path('app_login', {host: app.request.getHttpHost}) }}" method="post">...</form>
我有一个基于子域的多租户应用程序可以正常工作,但我在 Twig 模板中生成 link 时遇到问题。
所有生成的 link 都在默认子域上,而不是当前子域
routes.yaml
app_customer:
resource: '../src/Controller/Customer/'
host: "{subdomain}.domain.com"
defaults:
subdomain: tenant1
requirements:
subdomain: tenant1|tenant2
SecurityController.php
class SecurityController extends AbstractController
{
/**
* @Route("/login", name="app_login", methods={"GET","POST"})
*/
public function login(AuthenticationUtils $authenticationUtils)
{
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('security/login.html.twig', [
'last_username' => $lastUsername,
'error' => $error,
]);
}
}
login.html.twig
<form action="{{ path('app_login') }}" method="post">...</form>
将始终生成 https://tenant1.domain.com/login
但是当前的 url 是 tenant2.domain.com
我相信它总是生成 https://tenant1.domain.com/login
,因为您将 "tenant1" 设置为 subdomain
的默认值,并且在调用 [=14= 时没有传递不同的值]
试试这个:
{% set currsubdomain = app.request.getHttpHost()|split('.')|first %}
<form action="{{ path('app_login', {subdomain: currsubdomain }) }}" method="post">...</form>
或者只是传递整个主机:
<form action="{{ path('app_login', {host: app.request.getHttpHost}) }}" method="post">...</form>