Yii2学习笔记


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='用户表';