YII的Modules

原创
2013/05/09 23:36
阅读数 3.6K

一个相对来说大的项目。如果按照yii生成的webapp进行开发。所有的controller放到controllers文件夹下,所有的model放到models文件夹下面,如果你有n多个controller和n多的model,是不是就显得这种组织结构过于繁琐,冗余了。还好YII支持Modules结构。你的项目可以分成n多的Module,然后每一个Module有自己的controllers和models。这样的组织结构,无论是开发,管理都方便简洁多了。看看YII的Modules的是组织方式和使用方法。 1.用yiic创建module 在 《 YII Framework学习教程-用YIIC快速创建YII应用之三-2011-11-11 》,已经讲了如何用yiic给制定的应用创建一个模块。 在shell模式下,输入 module 模块名称 。 2.module的目录结构

[php] view plaincopy │ ├── models
│ │ ├── ContactForm.php
│ │ ├── LoginForm.php
│ │ └── User.php................................................................
│ ├── modules模块的存放目录
│ │ └── testmod一个模块,模块的名字对应是目录的名字,唯一。也是路由中的moduleid
│ │ ├── components模块用到的组件
│ │ ├── controllers包含控制器
│ │ │ └── DefaultController.php默认控制器
│ │ ├── messages国际化
│ │ ├── models模型类文件
│ │ ├── TestmodModule.php模块的类文件
│ │ └── views试图文件
│ │ ├── default默认视图
│ │ │ ├── index.php视图文件
│ │ └── layouts包含布局文件
│ ├── runtime....................................................................
│ │ └── application.log
│ ├── tests
│ │ ├── bootstrap.php
│ │ ├── fixtures
│ │ │ └── tbl_user.php

基本的目录结构如上,当然你可以在自己加入一些自定义的东西。
 
3.模块的类文件(例如:TestmodModule.php)

[php] view plaincopy

<?php class TestmodModule extends CWebModule { public function init() { // this method is called when the module is being created // you may place code here to customize the module or the application // import the module-level models and components $this->setImport(array( 'testmod.models.*', 'testmod.components.*', )); } public function beforeControllerAction($controller, $action) { if(parent::beforeControllerAction($controller, $action)) { // this method is called before any module controller action is performed // you may place customized code here return true; } else return false; } } 模块必须继承CWebModule(->CModule->CComponent)。类名是模块名首字母大写,后缀是Module。 init() 初始化模块,通过代码可以看到,可以用来导入其他模块的组件。主要完成模块的初始工作 beforeControllerAction() afterControllerAction() 用于在模块内的Controller,Action执行之前和执行之后进行相关的操作 4.模块的配置,使用方法 (1).配置文件/yii_dev/testwebap/protected/config/main.php 'modules'=>array('testmod',), 配置文件中也可以及添加对模块中属性初始化的参数例如: 'modules'=>array('testmod'=>array('param'=>'param1'), [php] view plaincopy <?php class TestmodModule extends CWebModule { public $param; 对应的访问方式是: Yii::app()->controller->module->param; (2).YII中的模块是非常灵活的,一个模块可以包含子模块。理论上,模块可以是无限嵌套。 5.模块的路由 在yii的路由章节已经说明了模块的路由格式。这里不再累述。 http://blog.csdn.net/mengxiangbaidu/article/details/7041296

展开阅读全文
打赏
1
7 收藏
分享
加载中
更多评论
打赏
0 评论
7 收藏
1
分享
返回顶部
顶部