第一次配置yii2中的模块,记录一下~
从官网下载下来的yii2的包里面只有一个主体,就是只有一个application块。
而我们一般的网站肯定是需要好几个模块的,比如pcsite/admin/api/wap 等
官网的教程也简单粗暴,直接在根目录下创建一个modules的目录即可。
我们这里以admin模块为例。
在根目录创建一个modules目录,然后在modules下面创建admin目录,大致结构如下:
admin/
Admin.php 模块类文件
controllers/ 包含控制器类文件
IndexController.php index控制器类文件
config/ 配置文件目录
web.php 主配置文件
models/ 包含模型类文件
views/ 包含控制器视图文件和布局文件
layouts/ 包含布局文件
main.php 布局文件
index/ 包含IndexController控制器视图文件
index.php index视图文件
现在想直接访问 basic.com/admin/index/index还是不行
编辑Admin.php 文件代码如下:
<?php
namespace app\modules\admin;
class Admin extends \yii\base\Module {
public function init() {
//默认加载父类也就是主体框架的启动配置
parent::init();
//加载该模块下的配置文件,可以重写覆盖之前的全局配置
\Yii::configure($this, require(__DIR__ . '/config/web.php'));
}
}
配置这个还不过,主体应该程序并未加载该模块,我们还需在 /config/web.php(全局配置文件)加上一段配置:
$config = [
//...
//之前的配置
'modules' => [
'admin' => [
'class' => 'app\modules\admin\Admin',
],
],
];
现在访问basic.com/admin/index/index 是可以访问到
modules/admin/controllers/AdminController.php 里面的 actionIndex() 方法里面的内容了。
但是发现这样访问很low,想忽略url总的 index/index
现在就要编辑模块的配置文件,config/web.php 我们可以理解为局部配置文件,内容如下:
<?php
$config = [
'defaultRoute'=>'index', //默认路由index
'layout' => 'main', //使用局部视图里面的main.php的布局,不配置默认继承全局的布局
];
return $config;
这样我们就可以直接访问 basic.com/admin 这样来访问默认的index控制器和index缺省的方法了。
布局也没有冲突了,美滋滋~