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

时间:2015-10-28 19:19:55

标签: symfony

我有3个域名设置:mydomain.com,mydomain-staging.com和mydomain-dev.com

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

除了FOSUserBundle设置的电子邮件中的确认链接(例如)http://api.mydomain-staging.com/register/confirm/[token]之外,所有内容都有效。我认为它将子域设置为api,因为这是请求来自的地方。

我正在尝试编辑registration.xml,因此我可以将注册网址的路由设置为始终用于网站子域" admin"相反" api"例如http://admin.mydomain-staging.com/register/confirm/[token]

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

这是我最近的尝试,但它在所有3台服务器上都提供了网址http://admin.mydomain.com/register/confirm/[token],而不是从paramters.yml获取域名

MyUserBundle /资源/配置/路由/ 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>
...

应用程序/配置/ config.yml

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

应用程序/配置/ paramters.yml

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

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

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

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

如果我从xml中删除默认值,则会收到错误:缺少一些必需参数(\&#34; _domain \&#34;)以生成路由的URL \&#34; fos_user_registration_confirm \&#34 ;

2 个答案:

答案 0 :(得分:0)

我认为你可以通过创建包含3个前置控制器(web/app_stage.phpconfig.ymlconfig_dev.yml)的3个环境来配置3个配置文件(config_stage.yml,{{1配置文件中的{}和app_domain覆盖适合您服务器的参数#include <vector> using namespace std; int main() { vector<int> a,b; a.assign(10,0); b.assign(10,1); for (auto c : a && auto d : b) // .... 。 有关详细信息,请参阅Symfony Environments

答案 1 :(得分:0)

问题是我正在使用的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>