Yii2 中模块相关配置

第一次配置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缺省的方法了。
布局也没有冲突了,美滋滋~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值