一个相对来说大的项目。如果按照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的目录结构
- │ ├── 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
- 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
- class TestmodModule extends CWebModule
- {
- public $param;
对应的访问方式是:
Yii::app()->controller->module->param;
(2).YII中的模块是非常灵活的,一个模块可以包含子模块。理论上,模块可以是无限嵌套。
5.模块的路由
在yii的路由章节已经说明了模块的路由格式。这里不再累述。
http://blog.csdn.net/mengxiangbaidu/article/details/7041296
相关推荐
yiren-p8Yii-ve2467575-x64.apk
yii2-device-detect, 移动检测库的Yii2扩展 yii2-device-detect基于Yii2扩展的移动检测库。使用它只需要在 composer.json file: 中使用这个扩展"alexandernst/yii2-device-detect":"0.0.12",
yii-advanced-app-2.0.4 下载
官网原版,供不方便下载的开发者使用
yii2-scroll-pager, 用于 Yii2 ListView小部件的无限AJAX滚动 Yii2滚动寻呼机使用AJAX将常规分页页面转换为无限滚动页。Y2SP使用 Pagination 对象,它指定了完整的页面数目和当前页码。使用 JQuery无限Ajax滚动插件...
yii-advanced-app-2.0.8.tgz 由于国外服务器下载太慢,共享下,用composer安装没有vendor核心文件夹
Yii2.0-图片上传扩展(异步加载缩略图) [扩展组件]
Yii2框架basic版本,修复了 yii\web\ViewAction 类中的安全问题。
yii是一个非常好的php框架,能让你快速搭建好一个性能优越的php网站,本教程是一个本非常好的yii入门教程,可以让你快速上手。
yii2高级多应用脚手架,下载yii-advanced-app-2.0.36.tgz直接使用开发,下载不了的朋友可以方便下载使用
Yii2参考手册,Yii2中文手册完整版
yii2-plugins-system, 带有事件管理器和https的Yii2插件系统模块 Yii2-plugins-system入门 Yii2-plugins-system是设计用来工作的。 这意味着安装需要最少的步骤。 你应该只需要一个配置步骤,你就可以在Yii2网站上...
yii-basic-app-2.0.7
Yii2 多输入小部件。 Yii2 小部件用于处理模型属性的多个输入和批量模型的表格输入。最新发布最新的稳定版扩展是 v2.24.0 按照从以前的版本升级安装安装此扩展的首选方法是通过 。 无论运行 ...
在开始使用此模块之前,请参阅 yii2-nested-sets 扩展的文档。 完全从头开始构建的树视图,无需任何第三方插件。 TreeView 是使用 HTML5、jQuery 和 CSS3 特性设计的,可以与 Yii PHP 框架一起工作。 采用 CSS3 ...
yii2基础脚手架,下载yii-basic-app-2.0.36.tgz直接使用开发,下载不了的朋友可以方便下载使用
Yii2 的 TinyMCE 小部件 呈现小部件。 安装 安装此扩展的首选方法是通过 。 要么跑 composer require 2amigos/yii2-tinymce-widget:~1.1 或添加 " 2amigos/yii2-tinymce-widget " : " ~1.1 " 到应用程序的...
YII2.0的中文离线html版,还有YII2.0的英文离线html版和yii-guide-2.0-zh-cn 官方中文文档PDF,请点头像自行下载,谢谢
yii2-wechat-sdk 是基于 Yii2 实现的微信API(公众号,企业号)高效率(绝对的!)SDK. 目前有3个主要文件可以使用Wechat.php 旧版微信公众号操作类(在新版[1.0]发布后会删除)MpWechat.php 新版微信公众号操作类(更标准,...
yii2-semantic-ui, Yii2的语义用户界面扩展 Yii2语义用户界面扩展语义用户界面( 用于 Yii2的扩展)安装yii2-semantic-ui 2.* 使用语义用户界面 2.*作曲家安装这里扩展的首选方法是通过 Composer 。运行php composer.