Zend Framework 2 module.config.php配置详解

来源:互联网 发布:amaze ui 知乎 编辑:程序博客网 时间:2024/06/06 03:38

先列一下zendframework 2中一会要讲到的配置相关的典型的目录结构:

先来看ZendSkeletonApplication(Skeleton是骨架,搭架子的意思)生成的入口文件public/index.php的默认代码

直接看最后一行:

该行表明入口文件加载了我们开头列出的config/application.config.php文件,并以此文件的配置信息来启动应用。接下来我们再来看看config/application.config.php的代码,为了简化,这里删除了默认被注释掉的部分:

这段代码注意两个地方,第一是在‘module’部分添加了一个Blog模块,因为后面要分析该模块的配置文件与Application模块的关系;第二是全局配置及本机配置路径,全局配置(config/autoload/global.php)一般用来存放一些全局的配置,如新浪微博登录的appkey,本机配置(config/autoload/local.php)用来存放与本机相关的配置,如数据库的用户名,端口等信息,涉及敏感信息的请不要把该文件上传到公用的git、svn等源码库中。

接下来是要重点讲的各模块的配置文件,他们位于各module之下,一般命名为module.config.php,里面包含路由,服务管理,多语言,控制器,视图管理等部分,这里以module/Application/module.config.php为例,介绍下常用的多语言,控制器和视图管理部分,路由是用得最多的,网上也很多相关资料,这里暂不解释。

多语言很简单,locale项配置当前语言,zh_CN表明使用简体中文,translation_file_patterns项配置了语言文件所在的位置:

控制器项配置了Service至实际Controller的映射,Service在路由配置及serviceLocator->get()中使用,为了好记,一般key和value只差Controller几个字符而已。。。

最后来看视图配置,直接在代码中的注释看吧

对于view_manager的配置值得一提的有几点:

1、doctype配置后,需要在layout模板开头加上以下代码才能起作用:

2、如果几个模块的module.config.php都配置了template_map项,不同的key会merge,相同的key会相互覆盖,以最后一个加载的为准,加载的顺序与config/application.config.php中“modules”的配置一致。比如这个例子中,module/Blog/config/module.config.php中的template_map如果也配置如下值:

那么Application与Blog模块的布局就都会变成由Blog模块下的布局文件决定。这一点对于新手可能不好理解,我猜想官方这样做,意思是application.config.php对应一个子系统,该文件加载的module是该子系统的模块,一个子系统所对应的布局模板应该是一致的。如果需要实现不同子系统,可以用另一种方式来实现,可参考《Zend Framework 2多域名多模块部署》。

3、template_path_stack项配置了模板路径库,在Controller中View->setTemplate($path)调用时,$path将会在该配置下的所有路径下寻找,直到找到为止,都找不到就会报错。不同模块的该配置值会merge,先加载的模块的路径会在前面。

0 0
原创粉丝点击