将子域路由添加到Symfony时,FileLoaderImportCircularReferenceException

时间:2015-04-17 12:36:33

标签: php symfony symfony-routing

我正在尝试将子域路由到Symfony2中的特定包。这就是我所拥有的:

我向我的主机添加了本地域名:

127.0.0.1    todolist.lc
127.0.0.1    manager.todolist.lc

我创建了一个虚拟主机,将所有子域转发到我的Symfony安装:

<VirtualHost 127.0.0.1>
 ServerName todolist.lc
 ServerAlias *.todolist.lc
 DirectoryIndex app_dev.php
 DocumentRoot "C:\xampp\htdocs\todolist\web"
</VirtualHost>

我创建了一个新的Bundle来处理子域manager.todolist.lc:

ManagerBundle

现在我正在尝试设置到manager.todolist.lc的路由:

frontend:
    resource: "@FrontendBundle/Controller/"
    type:     annotation
    prefix:   /

backend:
    resource: "@BackendBundle/Controller/"
    type:     annotation
    prefix:   /api

manager:
    host:     manager.todolist.lc
    resource: "@ManagerBundle/Controller/"
    type:     annotation
    prefix:   /

现在我添加了经理路由后,我在每条路线上都得到了一个FileLoaderImportCircularReferenceException。

我也尝试使用前缀,但这也给出了例外:

manager:
    resource: "@ManagerBundle/Controller/"
    type:     annotation
    prefix:   /manager

我无法弄清楚我错过了什么。我究竟做错了什么?如果您需要更多信息,请在评论中提出,我会提供。

1 个答案:

答案 0 :(得分:0)

确定。这就是我所缺少的:

<强> 1。我忘了将包加载到AppKernel

显然,这非常重要:

new FrontendBundle\FrontendBundle(),
new BackendBundle\BackendBundle(),
new ManagerBundle\ManagerBundle(),

<强> 2。子域需要在主域

之前声明

将捆绑包加载到AppKernel后,应用程序仍将路由到FrontController。我通过改变路线的顺序解决了这个问题:

manager:
    host:     manager.todolist.lc
    resource: "@ManagerBundle/Controller/"
    type:     annotation
    prefix:   /

frontend:
    resource: "@FrontendBundle/Controller/"
    type:     annotation
    prefix:   /

backend:
    resource: "@BackendBundle/Controller/"
    type:     annotation
    prefix:   /api

更改路线的顺序后,manager.todolist.lc和todolist.lc都有效。