一、YII2在windows系统中安装
- composer安装
利用composer.setup来安装 - 设置github的token
composer config -g github-oauth.github.com 上github获取token
点击头像->settings->Developer settings->Personal access tokens->Generate new token或者点击已创建的token
- 伴随着下载项目把静态资源也下载下来
composer global require "fxp/composer-asset-plugin:~1.3"
如果报错就需要查找到最新版本,然后进行安装,地址是:https://github.com/fxpio/composer-asset-plugin/blob/master/Resources/doc/index.md
- yii2安装项目
// 适合新手练手
composer create-project --prefer-dist yiisoft/yii2-app-basic 项目名
// 分前后台两个部分,开发常用
composer create-project --prefer-dist yiisoft/yii2-app-advanced 项目名
- 问题解决
composer install
如果还不能解决,那么重新执行流程1-4。
二、需求分析
分析所需要的数据库,表的结构以及是否需要前后台搭建,或者多模块搭建。
三、创建数据库
Navicat创建一个数据库
四、初始化项目
切换到项目根目录
php init
0
yes
五、修改配置
在common->config->main-local.php修改数据库名,密码
六、构建api目录
如果有版本要求,就创建一个v1目录
// 直接复制一个backend的模板即可,controller的namespace记得修改
// 如果是有前后台的话,利用gii来创建前后台模块
七、建立数据库以及表结构
根据项目需求建立数据库以及表与表之间的关联,记得考虑加上软删除,插入时间和修改时间
八、创建模型
使用gii创建 // 不用创建controller,记得选上Generate Labels from DB Comments,namespace为common\models
// 修改尾缀r=site%2Flogin即可到达
把后面改成=> ?r=gii
九、apache设置前后台域名
1.把"Include conf/extra/httpd-vhosts.conf"这一行,去掉前面的"#"
2.找到apache安装目录下,编辑conf/extra文件夹中的httpd-vhosts.conf文件(配置如下,乱用其他配置可能导致api接口无用)
<VirtualHost *:80>
// 域名
ServerName api.apitpl.com
// 别名
ServerAlias api.apitpl.com
// 文档根路径
DocumentRoot "E:\wamp\wampServer\www\apitpl\api\web"
// 路径
<Directory "E:\wamp\wampServer\www\apitpl\api\web">
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
# use index.php as index file
DirectoryIndex index.php
# ...other settings...
</Directory>
</VirtualHost>
3.重启apache(很重要)
十、修改配置
1.在config/main.php修改如下
'id' => 'app-api',
'controllerNamespace' => 'api\controllers',
'user' => [
'enableSession'=>false, // 不允许用session
]
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true, // 严格解析,至少要附和一条rules设定的美化规则
'showScriptName' => false, // 隐藏入口文件
'rules' => [
['class'=>'yii\rest\UrlRule', 'controller'=>'article'], // 调用框架已经定义好的URL规则,控制器选择
],
],
原理:这个yii\rest\UrlRule美化规则本质上是:“PUT,PATCH users/” => 'user/update’等等规则的结合
2.在config/main-local.php修改如下
'request' => [
'parsers'=>[
'application/json'=>'yii\web\JsonParser', // 设置应用能接收json数据
],
]
3.在common/config/bootstrap添加别名
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
4.在common/config/main-local.php
修改数据库连接
十一、创建相关控制器
重写restful接口方法
只能直接去复制一个控制器,make不出来,要继承自ActiveController,例子如下:
namespace api\controllers;
use yii\rest\ActiveController;
class ArticleController extends ActiveController{
// 指定关联模型
public $modelClass = 'common\models\Article' // 要用反斜杠不然会报错
}
解释:
这个控制器将会自带Restful风格的API
http://域名/articles // 接受get请求,会返回所有数据,执行的是index动作
http://域名/articles // 接受post请求,会上传新增数据,会返回id和传入的数据,执行的是create动作
http://域名/articles/1 // 接受get请求,会返回第一条数据,执行的是view动作
http://域名/articles/1 // 接受put请求,会更新第一条数据(这功能有点问题),执行的是update动作
http://域名/articles/1 // 接受delete请求,会删除第一条数据,执行的是delete动作
Tip:访问时候记得带上复数形式
十二、分模块
1.创建模块
使用gii,如下是在api目录下的操作
Module Class:
api\modules\backend\Module // 创建一个后端的模块
Module ID:
backend
api\modules\backend\Module // 创建一个前端的模块,如法炮制
2.配置设置
在api/main.php中设置
(1) 添加该模块
return [
'modules' => [
'backend' => [
'class' => 'api\modules\backend\Module',
],
],
]
(2) 路由配置
'urlManager' => [
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => ['backend/控制器名'],
]
]
]
(3) 模块设置修改
修改创建的模块下的Module.php,修改参考
namespace api\modules\backend;
public $controllerNamespace = 'api\modules\backend\controllers';
3.创建restful控制器
// 先直接复制DefaultController
// 继承自ActiveController
// 注意namespace
namespace api\modules\backend\controllers;
4.访问测试
域名/backend/控制器名(复数)