YII的Modules

一个相对来说大的项目。如果按照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.youkuaiyun.com/mengxiangbaidu/article/details/7041296

转载于:https://my.oschina.net/u/137226/blog/129439

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值