我正在尝试将子域路由到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:
现在我正在尝试设置到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
我无法弄清楚我错过了什么。我究竟做错了什么?如果您需要更多信息,请在评论中提出,我会提供。
答案 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都有效。