我正在Zend Framework 2中编写一个应用程序,该应用程序将从几个不同的子域运行,我希望每个子域都有一个不同的模块,以保持整洁。
我的问题是当我向路由添加多个子域时,它会丢失一个子域。
例如:此设置有效 testbed.localhost(模块/应用程序) a.testbed.localhost(module / A)
如果我添加一个额外的路由,它将路由所有请求a到应用程序索引控制器
例如 testbed.localhost(模块/应用程序),a.testbed.localhost(模块/ A),b.testbed.localhost(模块/ B)
这是module / A
的module.config.php 'router' => array(
'routes' => array(
'ads' => array(
'type' => 'Hostname',
'options' => array(
'route' => 'a.testbed.localhost',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'__NAMESPACE__' => 'A\Controller',
'controller' => 'A\Controller\A',
'action' => 'index',
),
),
这是module / B中module.config.php中的路由
'router' => array(
'routes' => array(
'ads' => array(
'type' => 'Hostname',
'options' => array(
'route' => 'b.testbed.localhost',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'__NAMESPACE__' => 'B\Controller',
'controller' => 'B\Controller\B',
'action' => 'index',
),
),
现在两个命名空间在module.config.php文件中都是正确的,我注意到的是子域a.testbed.localhost如果我从config / application.config.php中删除对它的引用
<?php
return array(
'modules' => array(
'Application',
'A',
'B', <--- A doesn't work if B is here
),
如果我换掉A&amp; B在上面的模块数组中,然后B将转发到应用程序模块,A将起作用。所以它似乎有超过1个子域的问题。有没有人有任何想法/遇到同样的事情?
答案 0 :(得分:2)
这是因为您的路线名称相同。我会为路线名称尝试广告和广告,这应该可以解决您的问题。
最后,配置将合并在一起。所以它就像一个数组,当最后一个数组被合并时,它会覆盖它之前的任何内容。