如何将变量传递给 Symfony 中的路由默认值?
How to pass a variable to routing defaults in Symfony?
我有一个包含多个品牌(子域)的 Symfony2 项目。每个子域应使用相同的站点功能和相同的路由(具有不同的主机名)。因此,我想将路由路径中的子域设为变量。现在看起来像:
mybundle_route:
resource: "@MyProjectBundle/Controller/"
type: annotation
prefix: /
host: "{subdomain}.%base_host%"
requirements:
subdomain: sub1|sub2
并且路由本身有效。但是如果我尝试生成一些路由(例如在树枝中),我会收到以下错误,因为没有设置子域变量:
Some mandatory parameters are missing ("subdomain") to generate a URL for route "company_route".
我不想将参数添加到项目中的每个 path() 函数。
如果我像这样添加默认值,它对一个子域来说是完美的:
defaults:
subdomain: sub1
但是其他子域的路由是错误的。它也不适用于
defaults:
subdomain: "%subdomain%"
我只需要将 %subdomain% 变量传递给默认值或将其设置在控制器构造函数中的某处。但我找不到它是怎么回事。如果有任何帮助,我将不胜感激。
如果没有更好的解决方案,您可以尝试在配置文件中设置%subdomain%
参数:
- 在配置文件夹中创建
subdomain_parameter.php
。
- 在此文件中,您可以访问
$container
,因此您可以从 url 手动检索当前子域并将其传递给容器。
- 在 config.yml
中导入 subdomain_parameter.php
我有一个包含多个品牌(子域)的 Symfony2 项目。每个子域应使用相同的站点功能和相同的路由(具有不同的主机名)。因此,我想将路由路径中的子域设为变量。现在看起来像:
mybundle_route:
resource: "@MyProjectBundle/Controller/"
type: annotation
prefix: /
host: "{subdomain}.%base_host%"
requirements:
subdomain: sub1|sub2
并且路由本身有效。但是如果我尝试生成一些路由(例如在树枝中),我会收到以下错误,因为没有设置子域变量:
Some mandatory parameters are missing ("subdomain") to generate a URL for route "company_route".
我不想将参数添加到项目中的每个 path() 函数。 如果我像这样添加默认值,它对一个子域来说是完美的:
defaults:
subdomain: sub1
但是其他子域的路由是错误的。它也不适用于
defaults:
subdomain: "%subdomain%"
我只需要将 %subdomain% 变量传递给默认值或将其设置在控制器构造函数中的某处。但我找不到它是怎么回事。如果有任何帮助,我将不胜感激。
如果没有更好的解决方案,您可以尝试在配置文件中设置%subdomain%
参数:
- 在配置文件夹中创建
subdomain_parameter.php
。 - 在此文件中,您可以访问
$container
,因此您可以从 url 手动检索当前子域并将其传递给容器。 - 在 config.yml 中导入
subdomain_parameter.php