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访问了