`

YII Framework学习教程-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
 
  1. │   ├── models  
  2. │   │   ├── ContactForm.php  
  3. │   │   ├── LoginForm.php  
  4. │   │   └── User.php................................................................  
  5. │   ├── modules模块的存放目录  
  6. │   │   └── testmod一个模块,模块的名字对应是目录的名字,唯一。也是路由中的moduleid  
  7. │   │       ├── components模块用到的组件  
  8. │   │       ├── controllers包含控制器  
  9. │   │       │   └── DefaultController.php默认控制器  
  10. │   │       ├── messages国际化  
  11. │   │       ├── models模型类文件  
  12. │   │       ├── TestmodModule.php模块的类文件  
  13. │   │       └── views试图文件  
  14. │   │           ├── default默认视图  
  15. │   │           │   ├── index.php视图文件  
  16. │   │           └── layouts包含布局文件  
  17. │   ├── runtime....................................................................  
  18. │   │   └── application.log  
  19. │   ├── tests  
  20. │   │   ├── bootstrap.php  
  21. │   │   ├── fixtures  
  22. │   │   │   └── tbl_user.php  

             

 

    基本的目录结构如上,当然你可以在自己加入一些自定义的东西。

     

    3.模块的类文件(例如:TestmodModule.php)

 

[php] view plaincopy
 
  1. <?php  
  2.   
  3. class TestmodModule extends CWebModule  
  4. {  
  5.     public function init()  
  6.     {  
  7.         // this method is called when the module is being created  
  8.         // you may place code here to customize the module or the application  
  9.   
  10.         // import the module-level models and components  
  11.         $this->setImport(array(  
  12.             'testmod.models.*',  
  13.             'testmod.components.*',  
  14.         ));  
  15.     }  
  16.   
  17.     public function beforeControllerAction($controller$action)  
  18.     {  
  19.         if(parent::beforeControllerAction($controller$action))  
  20.         {  
  21.             // this method is called before any module controller action is performed  
  22.             // you may place customized code here  
  23.             return true;  
  24.         }  
  25.         else  
  26.             return false;  
  27.     }  
  28. }  


   模块必须继承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
 
  1. <?php  
  2.   
  3. class TestmodModule extends CWebModule  
  4. {  
  5.     public $param;  
  6.       


     

 

        对应的访问方式是:

        Yii::app()->controller->module->param;        

     (2).YII中的模块是非常灵活的,一个模块可以包含子模块。理论上,模块可以是无限嵌套。

 

  5.模块的路由

     在yii的路由章节已经说明了模块的路由格式。这里不再累述。

 

 

http://blog.csdn.net/mengxiangbaidu/article/details/7041296

分享到:
评论

相关推荐

    yii-advanced-app-2.0.10.tgz

    这个版本是“yii-advanced-app-2.0.10.tgz”,它是一个压缩包,包含了 Yii 2 框架的高级应用模板,版本号为 2.0.10。这个版本可能包含了一些修复和改进,以提供更稳定和高效的开发环境。 Yii 2 是一个基于组件的高...

    yii2-device-detect, 移动检测库的Yii2扩展.zip

    yii2-device-detect, 移动检测库的Yii2扩展 yii2-device-detect基于Yii2扩展的移动检测库。使用它只需要在 composer.json file: 中使用这个扩展"alexandernst/yii2-device-detect":"0.0.12",

    yii-advanced-app-2.0.4

    "yii-advanced-app-2.0.4" 是 Yii 2.0 框架的一个高级应用模板,适用于构建复杂的多层应用程序。这个版本是 2.0.4,意味着它包含了该框架在 2.0 主线版本中的第四次更新,通常会包含修复的错误、改进的性能以及可能...

    yiren-p8Yii-ve2467575-x64.apk

    yiren-p8Yii-ve2467575-x64.apk

    yii2-file-upload-master.zip

    这个"yii2-file-upload-master.zip"压缩包包含了一个针对Yii2.0框架的图片上传扩展,特别设计来支持异步加载缩略图功能。这种功能在现代网页应用中非常常见,特别是在用户需要上传图像并即时查看预览效果时。 该...

    基于Yii2+layui的后台框架模板,实现了完善的RBAC权限控制-yii2-admin-theme.zip

    而layui是一款优秀的前端UI框架,它轻量级且模块化,适用于后台管理界面的设计,提供了丰富的组件和样式,让开发者可以快速构建出美观且响应式的页面。 本项目"基于Yii2+layui的后台框架模板,实现了完善的RBAC权限...

    yii-basic-app-2.0.5.tgz

    "yii-basic-app-2.0.5.tgz" 是一个压缩包,其中包含了Yii2框架的基础版(Basic App)的源代码,版本号为2.0.5。这个版本修复了一个重要的安全问题,具体涉及到`yii\web\ViewAction`类。 `yii\web\ViewAction`是Yii2...

    yii快速入门教程--一个非常好的php框架

    ### Yii快速入门教程知识点 #### 一、基本概念 **1. 入口文件** - **功能**: 入口文件是整个Yii应用的第一个脚本,它负责加载Yii框架以及初始化应用。 - **内容**: 通常包含如下代码: ```php $yii = dirname...

    Laravel开发-yii2-artisan-bridge

    总的来说,“Laravel开发-yii2-artisan-bridge”项目是PHP框架跨平台协作的一个创新实践,它让开发者有机会将两个优秀框架的优点结合在一起,以应对更复杂、更个性化的开发需求。对于熟悉Laravel Artisan但又在使用...

    yii-advanced-app-2.0.36.tgz

    Yii 2 Advanced Application 是一个基于 Yii 2 框架的高级项目模板,适用于构建复杂的、多应用的 Web 应用程序。版本号 2.0.36 表示这是该框架的一个稳定版本,提供了许多改进和修复。这个 `.tgz` 文件是该模板的...

    yii-advanced-app-2.0.8下载

    yii-advanced-app-2.0.8.tgz 由于国外服务器下载太慢,共享下,用composer安装没有vendor核心文件夹

    yii-basic-app-2.0.0.tgz

    Yii Framework 是一个高效且强大的PHP框架,用于构建大型Web应用程序。..."yii-basic-app-2.0.0.tgz"压缩包是学习和快速启动Yii 2.0项目的理想起点,开发者可以通过这个基础模板深入了解和掌握Yii框架的各个方面。

    yii2-plugins-system, 带有事件管理器和https的Yii2插件系统模块.zip

    yii2-plugins-system, 带有事件管理器和https的Yii2插件系统模块 Yii2-plugins-system入门 Yii2-plugins-system是设计用来工作的。 这意味着安装需要最少的步骤。 你应该只需要一个配置步骤,你就可以在Yii2网站上...

    yii1-ueditor-ext-1.1

    Yii1-UEditor-Ext-1.1 是一个专为Yii框架1.x版本设计的扩展插件,它将流行的富文本编辑器——百度UEditor整合到了Yii应用中。这个组件的目的是提供一个易于使用且功能丰富的文本编辑工具,使得开发者在处理用户内容...

    Yii2参考手册-新

    Yii2参考手册,Yii2中文手册完整版

    yii-docs-2.0-zh-cn.tar.gz

    同时,它还提供了英文版本的离线HTML文档以及"yii-guide-2.0-zh-cn"官方中文指南的PDF版本,这对于深入理解和学习Yii 2.0框架至关重要。 Yii 2.0 的核心特性包括: 1. **快速性能**:通过缓存机制、优化的查询构建...

    yii-basic-app-2.0.36.tgz

    "yii-basic-app-2.0.36.tgz"是Yii2框架的基础应用模板的压缩包,版本号为2.0.36。这个压缩包是为了方便开发者快速启动一个新的Yii2项目而设计的,它包含了构建基本Web应用所需的所有核心组件和文件。 首先,让我们...

    yii-advanced-app-2.0.11.tgz

    这个名为 "yii-advanced-app-2.0.11.tgz" 的压缩包包含了所有必要的文件和配置,使得开发者可以快速地搭建起基于Yii 2的多层架构项目。 Yii 2.0框架是Yii框架的最新迭代,它在性能、安全性和可扩展性方面都有显著...

    yii2-enhanced-gii:增强的Yii2 Gii(生成器),生成相关的模型和CRUD

    yii2-enhanced-gii Yii2 Gii(发电机)与关系 支持 在LinkedIn上支持我 安装 安装此扩展的首选方法是通过 。 无论运行 $ composer require mootensai/yii2-enhanced-gii:dev-master $ composer require kartik-v/...

    yii-basic-app-2.0.7

    yii-basic-app-2.0.7

Global site tag (gtag.js) - Google Analytics