1

我正在尝试将子域路由到 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

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

4

1 回答 1

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 都起作用了。

于 2015-04-17T13:34:58.487 回答