我找到了解决方案。谢谢楼上的回复,不过不是这样。
index
首先,我使用标准控制器和操作创建了新模块“子页面” 。
接下来,为此设置路由器:
'router' => array(
'routes' => array(
'subpage' => array(
'type' => 'segment',
'options' => array(
'route' => '/[:page[.html]]',
'constraints' => array(
'page' => '[a-zA-Z0-9]*',
),
'defaults' => array(
'controller' => 'Subpage\Controller\Subpage',
'action' => 'index',
),
),
),
),
),
但是当我在application.config.php添加模块时,带有路由的真实模块不可用。解决方案非常简单,但花了我几个小时的实验 - 将子页面模块移到第一个:)
在application.config.php
:
'modules' => array(
'Subpage',
'Application',
'Gallery',
),
现在,路由器跟踪是:
- 匹配现有控制器和路由器的 URL,从数组末尾开始
- 如果没有找到,尝试使用
Subpage
控制器进行路由;IndexAction
在此模块中检查数据库并 - 找到时 - 提供静态页面
- 当 URL 不匹配时:
- 何时进入
Subpage -> IndexController -> IndexAction()
:重定向到ErrorController
- 或者如果 URL 不匹配任何模块和子页面模块中的路由器,运行
ErrorController
这对于有 ZF2 经验的人来说很简单,但对我来说却不是。我还没有找到类似的东西。