/ yii2

yii2-app

Yii 2.0.15 模板改造

修改 common/config/main.php

?php
return [
    'aliases' => [
        '@bower' => dirname(dirname(__DIR__)) . '/node_modules',
        '@npm' => dirname(dirname(__DIR__)) . '/node_modules',
    ],
]

这样类似 BootstrapPluginAsset 的 public $sourcePath = '@bower/bootstrap/dist'; 就会正确定位到 path/to/project/node_modules

新增、修改 package.json,将 yii2 的 composer 依赖 bower-asset/* 转换为对应的 npm 包:

{
    "private": true,
    "dependencies": {
        "jquery": "^2.2.4",
        "bootstrap": "3.3.7",
        "inputmask": "^3.3.11",
        "jquery-treegrid": "^0.3.0",
        "jquery-ui": "^1.12.1",
        "punycode": "^2.1.0",
        "typeahead.js": "^0.11.1",
        "yii2-pjax": "^2.0.7"
    },
    "devDependencies": {},
    "license": "BSD-3-Clause"
}

再修改 composer.json

{
    "provide": {
        "bower-asset/jquery": "*",
        "bower-asset/bootstrap": "*",
        "bower-asset/inputmask": "*",
        "bower-asset/punycode": "*",
        "bower-asset/typeahead.js": "*",
        "bower-asset/yii2-pjax": "*"
    },
    "scripts": {
        "post-install-cmd": [
            "yii\\composer\\Installer::postInstall",
            "yarn install"
        ],
        "post-create-project-cmd": [
            "yii\\composer\\Installer::postCreateProject",
            "yii\\composer\\Installer::postInstall",
            "yarn install"
        ]
    }

删除项目根目录下的文件夹 vendornode_modules 后,将 composer 和 npm 都设置为使用国内的镜像源,执行:

composer install

你会发现,安装速度飞起,再也不会傻叉地 bower 向 api.github.com 作死了。

Yii2 的高级模板中有两种应用:

  • web 应用:frontend 和 backend
  • console 应用:console
  • rest 应用 ?

Web 应用和 Console 应用的区别:

  • Web 应用有 User 和 Session 组件。Console 应用没有。

应用的核心组件:

  • request
  • response
  • db
  • log
  • cache
  • view

使用 gii 创建模块(Module):http://haobing.wang/yii2

通常我们还需要一些 app:

  • api
  • mobile

我们可以将 frontend 复制一份,并命名为 mobile, 然后做一些调整。

Copy one of directories and name it "mobile" then adjust to your needs.

http://www.yiiframework.com/forum/index.php/topic/59246-how-do-create-new-applications-in-yii-2-advaced-template/

cp -r frontend mobile

新增 api application

1 复制应用主体

复制 project/frontend文件到同级目录下改名为 api

cp -r frontend api

2 设置应用主体

2.1 更正 namespace

修改命名空间,修改 api 下:

  • project/api/controllers
  • project/api/models
  • project/api/assets
  • project/api/views

将其中的命名空间为 frontend 改为 api

2 配置 environments

2.1 第一步:修改 project/environments/index.php

return [
    'Development' => [
        ...
        'setWritable' => [
            ...
            'api/runtime',
            'api/web/assets',
        ],
        ...
        'setCookieValidationKey' => [
            ...
            'api/config/main-local.php',
        ],
    ],
    'Production' => [
        ...
        'setWritable' => [
            ...
            'api/runtime',
            'api/web/assets',
        ],
        ...
        'setCookieValidationKey' => [
            ...
            'api/config/main-local.php',
        ],
    ],
];

2.2 复制 dev 环境配置文件

cp -r environments/dev/frontend environments/dev/api

2.3 复制 prod 环境配置

cp -r environments/prod/frontend environments/prod/api

2.4 初始化环境配置

执行环境部署。在项目根目录下init脚本,生成所需文件,即可以看到新增的部分。

php init

第六步:添加api文件夹别名,去 project/common/config/bootstrap.php 最后一行添加如下代码:

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

第七步:修改配置文件 project/api/config/main.php

return [
'id' => 'app-api',
// ... 
'controllerNamespace' => 'api\controllers',
];