模块(module)配置一览

来源:互联网 发布:写五线谱的软件 编辑:程序博客网 时间:2024/06/14 04:47

你可否知道?我们新建一个module后在web.php可以对其进行近20项配置?跟我看来~

不知道module?看下面代码

// web.php......'modules' => [    'partner' => [        'class' => 'app\modules\partner\Module',    ],],......

class

这是一个必填项,在yii2中很多地方都是这样的格式,我们想生成一个partner的模块对象,首先要知道是哪个类的对象,class就是这个作用。

通过这个配置我们建立了app\modules\partner\Module的对象。

再比如在db.php中的class也是这个作用,在BaseYii.php的createObject方法中你可以看到具体实现。

layout

布局参数,选填。

当你不填写时候会使用yii2应用的布局文件,你可以制定一个,比如

......'modules' => [    'partner' => [        'class' => 'app\modules\partner\Module',        'layout' => 'main'    ],],......

yii2会去寻找模块视图中的layouts/main.php文件。

重点:layout值是一个路径,不是一个名称,看下面的解释。

  • /a/main 寻找@app/views/layouts/a/main.php
  • a/main 寻找 @app/modules/partner/views/layouts/a/main.php

明白了吧。另外layout可以为false,代表禁用布局。

params

我们可以为模块设置一些参数,数组形式。记住这个参数属于整个模块,你可以在Module类中使用$this->params获得它们。

当然你在模块的控制器中也可以通过$this->module->params获得。

比如下面代码

......'modules' => [    'partner' => [        'class' => 'app\modules\partner\Module',        'params' => ['dev'=>'abei2017'],    ],],......

填写这个模块的开发者,总之是属于这个模块的。

id

在逻辑结构上代表一个module,一般不用修改,它和我们模块的目录名不一定要相等,比如下面代码也没问题

......'modules' => [    'abc' => [        'class' => 'app\modules\partner\Module',        'id'=>'partnerdd'    ],],......

我们通过r=abc/default/index 仍然可以进行访问,此刻module的id=partnerdd

basePath

一般来说不用修改,它代表一个模块的物理路径,记住要和class一致,否则basePath不会起作用,看下面代码

......'modules' => [    'partner' => [        'class' => 'app\modules\partner\Module',        'basePath' => "@app/a"    ],],......

上面代码中,yii2还回去找modules文件夹的partner文件夹,不会过问@app/a,所以应该如下

......'modules' => [    'partner' => [        'class' => 'app\a\Module',        'basePath' => "@app/a"    ],],......

简单的说,要psr规范。一般来说不用修改,除非你不想将模块放到modules文件夹内的时候可以用。

version

模块也需要版本,你如果不配置则默认为1.0。

......'modules' => [    'partner' => [        'class' => 'app\modules\partner\Module',        'version' => "2.0"    ],],......

我们在模块中可以通过$this->version获取它。

注意:如果你要显示2.0、3.0请用字符串形式,否则会显示2、3。

layoutPath

我想用一句话来说明这个事情,layoutPath + layout = “modules/partner/views/layouts/main.php”

layoutPath代表布局文件所在的目录,这个配置项的末尾没有斜杠。不推荐自定义,如果你非要记住它支持别名。

......'modules' => [    'partner' => [        'class' => 'app\modules\partner\Module',        'layoutPath' => "@app/a"    ],],......

有一点要注意,layoutPath必须在设置了layout的情况下才会生效。

viewPath

到这里后我想你自己已经知道viewPath的含义了,视图文件的路径,支持别名。

......'modules' => [    'partner' => [        'class' => 'app\modules\partner\Module',        'viewPath' => "@app/a"    ],],......

当访问模块某个action的时候,yii2会去@app/a目录下找视图文件

defaultRoute

默认路由,当我们的路由只是指定模块名时yii2会去寻找defaultRoute的配置,默认是default,所以当你访问index.php?r=partner,则yii2会寻址partner/default/index

如果你要改变它

......'modules' => [    'partner' => [        'class' => 'app\modules\partner\Module',        'defaultRoute' => "default/say"    ],],......

按照上面配置,当访问index.php?r=partner时,会寻址partner/default/say

controllerNamespace

一般不需要改变,除非你想改变存放控制器文件的目录名,看下面代码

......'modules' => [    'partner' => [        'class' => 'app\modules\partner\Module',        'controllerNamespace'=>'app\modules\partner\cs'    ],],......

然后你的控制器的命名空间需要是

namespace app\modules\partner\cs;

同时控制器的存储文件夹也应该是cs名称

这样才能正常运行,一般不需要自己修改,但是你可以修改。

controllerMap

这个功能适合于接口的统一,比如partner现在想使用外部的控制器,可以如下设置

......'modules' => [    'partner' => [        'class' => 'app\modules\partner\Module',        'controllerMap' => [            'aaa'=>'app\controllers\SiteController'        ]    ],],......

这样设置后,当我们访问index.php?r=partner/aaa/index 其实访问的是SiteController控制器下的actionIndex

总结

到此为止module设置的常用配置就都已经给大家说完了,感谢你阅读,若有疑问请留言本帖。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中小学校设计规范 遂州外国语小学校 成都私立小学校一览表 附近小学校有哪些 小学特色校本课程有哪些 小学数学校本研修课题 小学校本培训内容 小升初择校 苏州相城实验小学校 小学生守则 小学生500字作文 小学生国庆手抄报 小学生200字作文 小学生手报图片 小学生安全教育 小学生国庆节作文 小学生教育方法 小学生英文怎么说 小学生幼毛 小学生图片 小学生图 小学生的意思 小学生食谱 小学生歌曲 小学生谈恋爱 小学生是什么意思 小学生恋爱 小学生歌词 小学生吧 小学生在线学习 日本小学生 小学生b 小学生的胸 小学生三年级 小学生的英文 小学生女生 小学生五年级数学 小学生成绩 小学生英语三年级 小学生用英语 小学生英语教程