博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
yii2配置词典 / 模块(module)配置一览
阅读量:5768 次
发布时间:2019-06-18

本文共 3456 字,大约阅读时间需要 11 分钟。

hot3.png

你可否知道?我们新建一个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设置的常用配置就都已经给大家说完了,感谢你阅读,若有疑问请留言本帖。

原文来自 ,版权所有 转载请联系我微信 abei-pg。

转载于:https://my.oschina.net/abei2017/blog/1573865

你可能感兴趣的文章
hystrix实战之javanica
查看>>
校园火灾Focue-2---》洗手间的一套-》电梯
查看>>
css控制文字换行
查看>>
bzoj1913
查看>>
bzoj2301(莫比乌斯反演)
查看>>
【转】对于HttpClient和HtmlUnit的理解
查看>>
L104
查看>>
分镜头脚本
查看>>
ASP.NET中的cookie编程技术
查看>>
链表基本操作的实现(转)
查看>>
邮件发送1
查看>>
[转] libcurl异步方式使用总结(附流程图)
查看>>
编译安装LNMP
查看>>
[转]基于display:table的CSS布局
查看>>
企业级 SpringBoot 教程 (二)Spring Boot配置文件详解
查看>>
crm 02--->讲师页面及逻辑
查看>>
AS3.0 Bitmap类实现图片3D旋转效果
查看>>
Eigen ,MKL和 matlab 矩阵乘法速度比较
查看>>
带三角的面包屑导航栏(新增递增数字)
查看>>
Web应用程序安全与风险
查看>>