在Symfony2中,如何从parameters.yml自定义routing.xml url



我有三个域设置:mydomain.com、mydomain-staging.com和mydomain-dev.com

我使用angularJS应用程序注册新用户,它将注册详细信息发送到FOSUserBundle(我使用的是Symfony2 RESTful api)。

除了FOSUserBundle设置为的电子邮件中的确认链接之外,一切都在工作(例如)http://api.mydomain-staging.com/register/confirm/[令牌]。我认为这是将子域设置为api,因为这就是请求的来源。

我正在尝试编辑registration.xml,这样我就可以将注册URL的路由设置为网站子域"admin"而不是"api"。例如。http://admin.mydomain-staging.com/register/confirm/【代币】

我想把实际的域放入parameters.yml中,因为该文件是在每台服务器上创建的。然后参考xml中的参数。

这是我最近的一次尝试,但它给了我urlhttp://admin.mydomain.com/register/confirm/所有3台服务器上的[token],而不是从paramters.yml 获取域

MyUserBundle/Resources/config/routing/registration.xml

...
<route id="fos_user_registration_confirm" pattern="/confirm/{token}" host="admin.{_domain}">
    <default key="_controller">FOSUserBundle:Registration:confirm</default>
    <requirement key="_method">GET</requirement>
    <requirement key="_domain">%app.domain%</requirement>
    <default key="_domain">mydomain.com</default>
</route>
...

app/config/config.yml

...
parameters:
    app.domain: "%app_domain%"
...

app/config/parameters.yml

...
app_domain: mydomain-staging.com
...

编辑:我也尝试过使用环境配置文件(例如config_stage.yml),但routing.xml一直使用

<default key="_domain">...</default>

值,而不是转到我的配置文件。

如果我从xml中删除默认值,我会得到一个错误:缺少一些强制性参数(\"_domain\")来生成路由\"fos_user_registration_confirm\"的URL

我认为您可以通过创建具有3个前端控制器(web/app.phpweb/app_dev.phpweb/app_stage.php)的3个环境来做到这一点,其中3个配置文件(config.ymlconfig_dev.ymlconfig_stage.yml)会根据您的服务器覆盖参数app_domain。有关更多详细信息,请参阅Symfony Environments。

问题是我使用的xml。我应该将变量设置为默认值,而不是要求。像这样:

<route id="fos_user_registration_confirm" pattern="/confirm/{token}" host="admin.{_domain}">
    <default key="_controller">FOSUserBundle:Registration:confirm</default>
    <requirement key="_method">GET</requirement>
    <default key="_domain">%app.domain%</default>
</route>

最新更新