Yii2学习笔记
1.下载框架
首先下载 Yii2 的 Basic App 版本,下载地址:https://github.com/yiisoft/yii2/releases
2.安装框架
修改 yii/config/web.php 文件中 cookieValidationKey 的值。
3.开启重写
(1)修改 yii/config/web.php 文件,给 $config 的 components 项添加以下代码:
'urlManager' => [
'enablePrettyUrl' => true,
// 'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
// ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
],
]
(2)在web目录下新建.htaccess文件,写入以下代码:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
</IfModule>
4.新建控制器
在 yii/controllers 目录下新建控制器 UserController.php
<?php
namespace frontend\controllers;
use Yii;
use yii\web\Controller;
use frontend\models\DefaultModel;
class DefaultController extends Controller
{
public function actionIndex()
{
// return $this->render('index');
}
}
5.配置数据库连接信息
修改 yii/config/db.php 文件,填写相应的数据库信息。
如果需要添加数据库前缀,增加 tablePrefix 选项。
6.新建模块操作数据库
在 yii/models 目录下新建模块,默认格式如下:
<?php
namespace frontend\models;
use Yii;
use yii\db\ActiveRecord;
class DefaultModel extends ActiveRecord
{
public static function tableName()
{
return 'table';
}
public function rules()
{
return [
[['name', 'title'], 'required'],
[['name'], 'string', 'max' => 10],
[['name'], 'unique']
];
}
}
7.新建视图
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
$this->title = 'title';
?>
<h1><?= Html::encode($this->title) ?></h1>
<?php $form = ActiveForm::begin(['id' => 'form-id']); ?>
<?php ActiveForm::end(); ?>
8.获取CSRF的值
Yii::$app->request->csrfToken
9.获取$_POST的值
Yii::$app->request->isPost
Yii::$app->request->post()
10.数据库查询
yii\db\ActiveRecord::find()->where()->orderby()->asArray()->limit(10)->one()/count()/all();
yii\db\ActiveRecord::findBySql($sql)->all();
yii\db\ActiveRecord::findOne($where);
yii\db\ActiveRecord::findAll($where);
yii\db\ActiveRecord->save()
yii\db\ActiveRecord->insert()
yii\db\ActiveRecord->update()
yii\db\ActiveRecord->delete()
11. 获取已登录用户信息
# uid
Yii::$app->user->identity->id
# username
Yii::$app->user->identity->username
12. 控制器中的一些方法
# 返回首页
return $this->goHome();
# 返回上一页
return $this->goBack();
# 跳转
return $this->redirect(['/home']);
# 刷新页面
return $this->refresh();
13. 一些加密方法
# 获取一个随机密钥
Yii::$app->security->generateRandomString();
# 密码加密
Yii::$app->security->generatePasswordHash($password);
# 验证密码
Yii::$app->security->validatePassword($password, $this->password_hash);
14. 用户数据表
CREATE TABLE `user` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(200) CHARACTER SET utf8mb4 NOT NULL COMMENT '用户名',
`auth_key` varchar(32) NOT NULL COMMENT '身份校验密钥',
`password_hash` varchar(200) NOT NULL COMMENT '密码哈希值',
`password_reset_token` varchar(200) DEFAULT '' COMMENT '重置密码密钥',
`phone` varchar(20) NOT NULL COMMENT '手机号',
`status` tinyint(4) NOT NULL DEFAULT '10' COMMENT '状态',
`created_at` int(11) NOT NULL COMMENT '创建时间',
`updated_at` int(11) NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `phone` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';