Yii2.0 初始化自定义模块

2019-12-17 22:10:18 浏览数 (1)

在使用 composer 下载项目的时候,我们会需要使用 php init 命令进行初始化项目。

执行该命令会生成如下配置文件

config 目录:

代码语言:javascript复制
main-local.php
params-local.php
test-local.php

web 目录

代码语言:javascript复制
index.php
index-test.php
robots.txt

日常生活中,我们或多或少需要新增多余的模块来满足我们的开发需要,比如我们需要创建一个 api 目录,来实现接口开发。那么具体如何新增模块呢?

新增模块 拷贝backend目录,命名为api 打开 apiconfigmain.php 修改 id,controllerNamespace

代码语言:javascript复制
return [
    'id' => 'app-api',
    'basePath' => dirname(__DIR__),
    'controllerNamespace' => 'apicontrollers',
]

打开 commonconfigmain.php 开启 url 路由美化规则

代码语言:javascript复制
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
    ],
],

打开 commonconfigbootstrap.php 添加以下别名

代码语言:javascript复制
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');

这样就创建了一个名为 api 的模块, 但是我如果我们使用 git 进行版本管理的时候,默认会忽略掉一些配置文件(上方列举的),我们项目上线安装的时候,肯定也会使用 composer 来进行安装,但是在执行初始化的时候会发现并不会为我们发布出来 api 的配置文件,我们还需要手动创建,不免有些繁琐吗?接下来我们就配置一下,使其和 backendfrontend 一样,直接执行 php init 就可以为我们初始化项目

配置 具体配置需要在环境变量里面

打开项目根目录,应该会存在一个 environments 目录

编辑 environments/index.php 文件,参照代码复制一份改为 api

代码语言:javascript复制
return [
    'Development' => [
        'path' => 'dev',
        'setWritable' => [
            'backend/runtime',
            'backend/web/assets',
            'frontend/runtime',
            'frontend/web/assets',
            'api/runtime',   ## 此处为修改
            'api/web/assets',  ## 此处为修改
        ],
        'setExecutable' => [
            'yii',
            'yii_test',
        ],
        'setCookieValidationKey' => [
            'backend/config/main-local.php',
            'frontend/config/main-local.php',
            'api/config/main-local.php',  ## 此处为修改
        ],
    ],
    'Production' => [
        'path' => 'prod',
        'setWritable' => [
            'backend/runtime',
            'backend/web/assets',
            'frontend/runtime',
            'frontend/web/assets',
            'api/runtime',   ## 此处为修改
            'api/web/assets',   ## 此处为修改
        ],
        'setExecutable' => [
            'yii',
        ],
        'setCookieValidationKey' => [
            'backend/config/main-local.php',
            'frontend/config/main-local.php',
            'api/config/main-local.php',  ## 此处为修改
        ],
    ],
];

修改两处 一处为 Development 开发环境、另一处为 Production 生成环境。

打开 environments 下的 dev 目录,复制 backend 目录到此目录下 重命名为 api 同理打开 environments 下的 prod 目录,复制 backend 目录到此目录下 重命名为 api 以上工作做完就可以使用以下命令初始化项目了.

代码语言:javascript复制
php init

如果有人查看过这篇文章,请记得修改环境变量,使其可以初始化项目

0 人点赞