我在zend framework 2应用程序中使用了两个模块:
我遇到的问题是我只能使用一个我为相应模块配置的路由。使用的路由取决于 application.config.php 文件中模块的排序:
<?php
return array(
'modules' => array(
'ModuleA','ModuleB'
);
?>
每个模块包含几乎相同的配置 module.config.php :
<?php
return array(
'router' => array(
'routes' => array(
'ModuleA' => array(
'type' => 'Literal',
'options' => array(
'route' => '/moduleA',
'defaults' => array(
'__NAMESPACE__' => 'ModuleA\Controller',
'controller' => 'index',
'action' => 'index',
),
),
'may_terminate' => false,
'child_routes' => array(
'moduleA-index' => array(
'type' => 'Segment',
'options' => array(
'route' => '/index[/:action]',
'defaults' => array(
'controller' => 'index',
'action' => 'index'
)
)
)
)
)
)
)
);
现状:
预期:
对于我如何以正确的方式使用这两种配置/路线,您有什么建议吗?
答案 0 :(得分:0)
只需添加'优先级'参数
<?php
return array(
'router' => array(
'routes' => array(
'ModuleA' => array(
'type' => 'Literal',
'priority' => 100, // <-- priority
'options' => array(
'route' => '/moduleA',
'defaults' => array(
'__NAMESPACE__' => 'ModuleA\Controller',
'controller' => 'index',
'action' => 'index',
),
),
'may_terminate' => false,
'child_routes' => array(
'moduleA-index' => array(
'type' => 'Segment',
'options' => array(
'route' => '/index[/:action]',
'defaults' => array(
'controller' => 'index',
'action' => 'index'
)
)
)
)
)
)
)
);
答案 1 :(得分:0)
您是否也在moduleB配置中使用'controller' => 'index',
?
如果是,那么您的问题index
在别名上,只有 1 控制器可以拥有该别名,换句话说,别名应该是唯一的抛弃应用程序而不仅仅是一个模块
为您的控制器定义一个唯一的名称(别名),你会没事的。
在我的项目中我只使用FQN,所以没有混淆(Namespace\Controller\ControllerName
)