Yii2 advance 扩展一个新应用

我们知道 Yii2-advance 本就是一个多应用模板 ,里面有frontend,backend,console(控制台).如果我想扩展一个web应用呢,譬如我要做一个多商户的后台,叫merchant应用.

做独立应用的好处在于便于维护,可以避免以下问题

  • 配置的冲突

  • 控制器的命名不便

  • url美化规则冲突

那怎么扩展呢

其实很简单在advance 模板刚初始化完成的时候,backend应用也没什么应用代码,

  1. 直接在backend同级目录复制backend文件夹重命名为merchant

  2. 把merchant文件中启用批量替换把里面文件中的backend全部替换成merchant

  3. 在common文件夹的config文件夹下面bootstrap.php文件最后添加一行

    Yii::setAlias('@merchant', dirname(dirname(__DIR__)) . '/merchant');

  4. merchant的config文件夹里的main-local.php里'cookieValidationKey' 的值修改一下不要和backend里的一致

  5. 如果你想初始化的时候也能初始化这个应用,那么把 environments文件夹下面的dev 和 prod 下面各自的backend文件夹也复制一份重名为merchant 

  6. 修改 environments文件夹下面index.php里面的数组的值含有backend的值,全部添多加一份,把backend换成merchant修改成下面的样子

    return [
        'Development' => [
            'path' => 'dev',
            'setWritable' => [
                'backend/runtime',
                'merchant/runtime',
                'backend/web/assets',
                'merchant/web/assets',
                'console/runtime',
                'frontend/runtime',
                'frontend/web/assets',
            ],
            'setExecutable' => [
                'yii',
                'yii_test',
            ],
            'setCookieValidationKey' => [
                'backend/config/main-local.php',
                'merchant/config/main-local.php',
                'common/config/codeception-local.php',
                'frontend/config/main-local.php',
            ],
        ],
        'Production' => [
            'path' => 'prod',
            'setWritable' => [
                'backend/runtime',
                 'merchant/runtime',
                'backend/web/assets',
                'console/runtime',
                'frontend/runtime',
                'frontend/web/assets',
            ],
            'setExecutable' => [
                'yii',
            ],
            'setCookieValidationKey' => [
                'backend/config/main-local.php',
                'merchant/config/main-local.php',
                'frontend/config/main-local.php',
            ],
        ],
    ];

  7. 如果你的项目也有yii2 的.gitgnore 提交忽略文件,按照backend目录里照样把merchant中的忽略提交的文件,也写上。

    5,6,7 步骤并不太重要(只有整个框架(包括backend)没初始化的时候需要考虑),一般扩展独立应用就前四步即可了。

评论区
登陆 后评论!