配置文件

admin 发表于 2018-05-14 16:23 上一篇

首页 > 技术文档 > 模块

配置文件
发表于 2018-05-14 16:23

开始

安装目录里必须要有一个config.php,这个文件我们称之为模块配置文件。

这个文件里的所有配置与模块紧密结合。没有它,便不能安装一个模块。

以下是一个详细的模块配置文件。

config.php
return array(


'param'=>array(
        'name' => '工作流',
        'category' => '工作流',
        'description' => '用于办理、设计与管理企业工作流程。',
        'author' => 'banyan @ IBOS Team Inc',
        'version' => '2.0',
        'indexShow' => array(
            'widget' => array(
            'workflow/workflow'
             ),
        'link' => 'workflow/list/index&op=category',
        ),
    ),
    'config' => array(
        'modules' => array(
            'workflow/workflow'
        ),
        'import' => array(
            'application.modules.workflow.core.*',
            'application.modules.workflow.controllers.*',
            'application.modules.workflow.model.*',
            'application.modules.workflow.utils.*',
            'application.modules.workflow.widgets.*',
        ),
        'components' => array(
            'messages' => array(
                'extensionPaths' => array(
                    'workflow' => 'application.modules.workflow.language'
                )
            )
        ),
    ),
    'authorization' => array(
        'use' => array(
            'type' => 'node',
            'name' => '工作流使用',
            'group' => '使用',
            'controllerMap' => array(
                'list' => array( 'index', 'count' ),
                'focus' => array( 'index' ),
                'form' => array( 'index' ),
                'new' => array( 'index', 'add' ),
                'monitor' => array( 'index' ),
                'preview' => array(
                    'getprcs', 'print', 'newpreview', 'flow',
                    'redo', 'sendremind'
                ),
                'query' => array(
                    'index', 'advanced', 'search', 'add',
                    'searchresult', 'export'
                )
            )
        ),
        'entrust' => array(
            'type' => 'node',
            'name' => '工作流委托',
            'group' => '使用',
            'controllerMap' => array(
                'entrust' => array(
                    'index', 'add', 'status', 'del',
                    'confirmpost', 'confirm'
                )
            )
        ),
        'destroy' => array(
            'type' => 'node',
            'name' => '工作流销毁',
            'group' => '使用',
            'controllerMap' => array(
                'recycle' => array( 'index', 'restore', 'destroy' )
            )
        ),
        'flow' => array(
            'type' => 'node',
            'name' => '流程管理',
            'group' => '工作流设置',
            'controllerMap' => array(
                'type' => array(
                    'add', 'del', 'edit', 'export',
                    'freenew', 'getguide', 'import', 'index',
                    'trans', 'verify'
                ),
                'timer' => array(
                    'index', 'save'
                ),
                'querytpl' => array(
                    'index', 'add', 'del', 'edit'
                ),
                'process' => array(
                    'index', 'getprocessinfo', 'getprocess', 'add',
                    'saveview', 'edit', 'del'
                ),
                'manager' => array( 'index', 'add', 'edit', 'del' ),
            )
        ),
        'form' => array(
            'type' => 'node',
            'name' => '表单管理',
            'group' => '工作流设置',
            'controllerMap' => array(
                'formtype' => array(
                    'index', 'add', 'edit', 'del',
                    'import', 'export', 'design', 'preview',
                ),
                'formversion' => array(
                    'index', 'restore', 'del'
                )
            )
        )
    )
);

如你所见,这是一个数组格式的配置文件,下面我们每个选项逐一讲解。

模块参数项

'param' => array(
        'name' => '工作流',         
        'category' => '工作流',     
        'description' => '用于办理、设计与管理企业工作流程。', 
        'author' => 'banyan @ IBOS Team Inc',
        'version' => '2.0', 
        'indexShow' => array(  
            'widget' => array(
                'workflow/workflow'
            ),
        'link' => 'workflow/list/index&op=category',
        ),
 ),
  • name 模块显示名字 ,必填字段

  • category 模块所属的分类,这个分类将会用在岗位管理里的权限设置上,这点很重要 (可选)

  • description 模块的描述,用在后台显示 ,必填字段

  • author 模块作者 (可选)

  • version 模块版本 (可选)

  • indexShow 办公首页配置,可配置多个 (可选)

  • widget 办公首页开启挂件 (可选)

  • link 首页图标链接 (可选)

模块配置项

'config' => array(
    'modules' => array(
        'workflow' => array( 'class' => 'application\modules\workflow\WorkflowModule' )
    ),
    'import' => array(
            'application.modules.workflow.core.*',
            'application.modules.workflow.controllers.*',
            'application.modules.workflow.model.*',
            'application.modules.workflow.utils.*',
            'application.modules.workflow.widgets.*',
     ),
    'components' => array(
        'messages' => array(
            'extensionPaths' => array(
                'workflow' => 'application.modules.workflow.language'
            )
        )
    ),
),
  • modules 模块标识。对应的值 (e.g:workflow) 不仅在数据表中唯一,还是 访问URL 里的第一个参数,也是 Yii 里关于模块的识别符,每个模块都有一个xxModule.php,用来标识那个模块。

  • import 模块加载的路径,其值对应的路径将会在调用模块的文件时包含进来,从而实现自动加载。本例中,application是一个 Yii 内部定义的命名空间,在这里是指向system文件夹。如application.modules.workflow.core.*便是代表加载system/modules/workflow/core文件夹里的所有文件。注意:没有设置该路径却调用了该文件夹里的文件,会出错(新版本采用命名空间,已经不需要配置)

     

  • components 模块加载的组件。一般来说,我们无须另外写模块的组件,因为 IBOS 本身和Yii 已经提供了各方面功能强大的组件供调用。如果实在有必要,请参考Yii框架配置数组里的configure一节。事实上你会发现,这一段就是Yii框架配置数组里的configure一节。

本例中,加载的组件是Yii的 CPhpMessageSource,即语言组件,这样在模块内就可以调用模块自身的语言包

模块授权项

'authorization' => array(
        'use' => array(
            'type' => 'node',
            'name' => '工作流使用',
            'group' => '使用',
            'controllerMap' => array(
                'list' => array( 'index', 'count' ),
                'focus' => array( 'index' ),
                'form' => array( 'index' ),
                'new' => array( 'index', 'add' ),
                'monitor' => array( 'index' ),
                'preview' => array(
                    'getprcs', 'print', 'newpreview', 'flow',
                    'redo', 'sendremind'
                ),
                'query' => array(
                    'index', 'advanced', 'search', 'add',
                    'searchresult', 'export'
                )
            )
        ),
        // ...略
    )
  • authorization 代表该模块的操作授权项。IBOS采用基于角色的授权访问控制,意味着任何用户(除超级管理员外)的所有操作都可以通过岗位(即角色)来进行控制。这里定义的便是该模块的所有操作项与信息。定义了该项后,编辑任何一个岗位,便会在权限设置里出现如图1的模块设置选项。

  • use 代表一个授权节点的英文标识,在一个模块的授权项内不能重复

  • type 授权类型,可以是node(普通节点)或data(数据节点,也称数据权限),如果类型为data,那么该节点的表现形式为略有不同,参见数据节点代码及效果图。

  • name 节点名称

  • group 该节点的所属分类

  • controllerMap 该节点的控制器映射数组(键为控制器名称,值为该控制器所有的公共方法)。

IBOS为了优化授权体验,将部分操作组成一个概念上的组,比如在本例中,一个列表(list)控制器,应该有index,count等操作,那么这个概念上的组就称为列表。列表不是一个实际上的操作,但它事实上却包含有两个操作,我赋值给你列表权限,你便拥有了index,count的操作权限。可以从图1看到,这样的赋值大大减少了一个个操作赋予权限的繁琐。

数据节点代码及效果图

'user' => array(
    'type' => 'data',
    'name' => '用户管理',
    'group' => '组织架构',
    'node' => array(
        'view' => array(
            'name' => '查看',
            'controllerMap' => array(
                'user' => array( 'index' )
             )
         ),
         'manager' => array(
              'name' => '管理',
              'controllerMap' => array(
                  'user' => array( 'add', 'edit', 'del', 'isRegistered' )
               )
          )
    )
),

以上信息是否对您有帮助?
0.2008s