zoukankan      html  css  js  c++  java
  • Yii framework 创建和使用模块(module)方法[转]

    注意:对于模块的支持从版本 1.0.3 开始。

    一个模块是一个自我包含的软件单元,它由模型,视图,控制器和另外组件组成。在很多方面,一个模块类似于一个应用。主要的不同是一个模块不能单独部署,它必须位于一个应用的内部。用户可以访问一个模块中的控制器,就像访问一个普通的应用的控制器。

    模块在一些情况下是有用的。对于一个大型应用,我们可以将它分离为几个模块。每个被单独的开发和维护。一些常用的特征,例如用户管理,评论管理,可以以模块的方式开发以便它们在未来的项目容易的重用。

    创建模块

    一个模块被组织为一个和它ID名字相同的目录。模块目录的结构类似于应用的目录。下面展示一个名为 forum 的典型目录结构:

     
    01 forum/
    02    ForumModule.php          the module class file
    03    components/              containing reusable user components
    04       views/                containing view files for widgets
    05    controllers/             containing controller class files
    06       DefaultController.php the default controller class file
    07    extensions/              containing third-party extensions
    08    models/                  containing model class files
    09    views/                   containing controller view and layout files
    10       layouts/              containing layout view files
    11       default/              containing view files for DefaultController
    12          index.php          the index view file
     

    一个模块必须有一个扩展自 CWebModule的模块类。类的名字是表达式 ucfirst($id).’Module’, $id是模块ID(或模块目录名)。模块类是在模块代码中存储信息以及分享的核心。例如,我们可以使用 CWebModule::params来存储模块参数,使用CWebModule::components在模块级分享应用组件。

    提示:我们可以使用 yiic 工具来创建一个新模块的框架。例如,要创建上面的 forum 模块,我们可以在命令行窗口中执行下面的命令:

     
    1 % cd WebRoot/testdrive
    2 % protected/yiic shell
    3 Yii Interactive Tool v1.0
    4 Please type ’help’ for help. Type ’exit’ to quit.
    5 >> module forum

    使用模块

    要使用一个模块,首先放置模块目录到应用基本目录下。然后在应用的 modules 属性中声明模块ID。例如,为了使用上面的 forum 模块,我们可使用下面的应用配置:

     
    1 return array(
    2     ......
    3     'modules'=>array('forum',...),
    4     ......
    5 );

    一个模块也可以使用初始值来配置。其用法非常类似于配置应用组件。例如,模块 forum 在它的模块类中可以有一个属性 postPerPage,在应用配置中可以如下配置:

     
    1 return array(
    2     ......
    3     ’modules’=>array(
    4         ’forum’=>array(
    5             ’postPerPage’=>20,
    6         ),
    7     ),
    8     ......
    9 );

    模块实例可以通过当前活动控制器的module属性来访问。通过模块实例,我们可以访问在模块级分享的信息。例如,为了访问上面的 postPerPage 信息,我们可以使用下面的表达式:

     
    1 $postPerPage=Yii::app()->controller->module->postPerPage;
    2 // or the following if $this refers to the controller instance
    3 // $postPerPage=$this->module->postPerPage;

    一个模块中的控制器动作可以使用路由 moduleID/controllerID/actionID 来访问。例如,假设上面的 forum 模块有一个名为 PostController 的控制器,我们可以使用路由 forum/post/create 来指向此控制器的 create 动作。相应的路由的 URL 是 http://www.example.com/index.php?r=forum/post/create。

    提示:若一个控制器是一个控制器的子目录,我们仍然可以使用上面的路由格式。例如,假设 PostController 位于 forum/controllers/admin 目录中,我们可以指向 create 动作使用 forum/admin/post/create。

    嵌套模块

    模块可以嵌套,一个模块可以包含另外的模块。我们称前者为parent module(父模块)后者为child module(子模块)。子模块必须放置在父模块的 modules目录下。要访问一个子模块中的控制器动作,我们应当使用路由parentModuleID/childModuleID/controllerID/actionID。

    原文 http://www.yiiframework.com/doc/guide/basics.module 翻译 http://dreamneverfall.cn/yiidoc/basics.module.htm

  • 相关阅读:
    接口测试
    Appium应用
    adb常用指令与APPium环境搭建
    移动端专项测试
    tomcat修改端口号
    Linux之Redis安装
    FTL常用标签及语法
    .ftl文件介绍
    maven之clean、install命令
    tomcat环境变量详细配置步骤
  • 原文地址:https://www.cnblogs.com/bullz/p/2256813.html
Copyright © 2011-2022 走看看