zendframework2.3新建模块之模块配置

1. 新建模块Test,新建IndexController,使用zf工具或者手动创建目录结构和文件完成即可

2. 添加模块到项目模块列表--config/application.config.php文件中的modules键值对(zf创建模块时会自动完成这一步)

3. 修改模块配置文件(本例中文件位置为:moduleTestconfigmodule.config.php)

 1 <?php
 2 return array(
 3     'controllers' => [
 4         'invokables' => [
 5             'TestControllerIndex' => 'TestControllerIndexController',
 6 
 7         ]
 8     ],
 9     'router' => [
10         'routes' => [
11             'test' => [
12                 'type' => 'Literal',
13                 'options' => [
14                     'route' => '/test',
15                     'defaults' => [
16                         '__NAMESPACE__' => 'TestController',
17                         'controller'    => 'Index',
18                         'action'        => 'index'
19                     ]
20                 ],
21                 'may_terminate' => true,
22                 'child_routes' => [
23                     'default' => [
24                         'type'    => 'Segment',
25                         'options' => array(
26                             'route'    => '/[:controller[/:action]]',
27                             'constraints' => array(
28                                 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
29                                 'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
30                             ),
31                             'defaults' => array(
32                             ),
33                         ),
34                     ]
35                 ]
36             ]
37         ]
38     ],
39     'view_manager' => array(
40         'template_path_stack' => array(
41             'test' => __DIR__ . '/../view',
42         ),
43     ),
44 );

以上模块配置中的controllers,router和view_manager是模块能被正常访问所必须的配置

controllers中的invokables数组中配置的是可访问的Controller,如是新建的Controller则必须加到这个数组中才能被访问到,数组中键的格式 "命名空间控制器ID",对应的值是 "命名空间控制器类名"

router是路由配置,其中最重要的一点就是命名空间的配置,本例中的路由包含一个子路由的配置,它可以使得此module中的所有在invokables中注册过的控制器都能被访问到

view_manager是模板文件配置,指明了本模块模块文件存放路径

完成这些配置之后新建的模块就可以通过host/test/actionname访问了

原文地址:https://www.cnblogs.com/flytome/p/4371443.html