入门篇 - Gii CRUD 实战

知识库
知识库文档
/tech-stacks/yii/tutorial/入门篇 - Gii CRUD 实战.md

文档

Yii2 入门教程:Gii 代码生成器实战

1. 背景

Gii 是 Yii2 最强大的功能之一——可视化/命令行代码生成器。本教程通过 Gii 快速生成完整的 CRUD 模块,展示 Yii 的"少写代码"哲学。

2. 前置概念

概念 说明
Gii Web 代码生成器,自动生成 Model/CRUD/Module
ActiveRecord Yii 的 ORM 实现,一行代码 CRUD
GridView 数据表格 Widget,支持排序/分页/过滤

3. 分步操作

步骤一:创建数据库表

CREATE TABLE product (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(128) NOT NULL,
    price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
    description TEXT,
    category VARCHAR(64),
    stock INT DEFAULT 0,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

步骤二:配置数据库

config/db.php

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=yii_demo',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
];

步骤三:启用 Gii 模块(开发环境)

config/web.php

if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}

步骤四:使用 Gii 生成代码

访问 http://localhost:8080/index.php?r=gii

a) 生成 Model

  • 点击 "Model Generator"
  • Table Name: product
  • Model Class: Product
  • 点击 Generate

b) 生成 CRUD

  • 点击 "CRUD Generator"
  • Model Class: app\models\Product
  • Controller Class: app\controllers\ProductController
  • 点击 Generate

就这样,完整的增删改查模块已生成!

步骤五:访问 CRUD

php yii serve
# 访问 http://localhost:8080/index.php?r=product

你将看到一个完整的数据表格,支持创建、编辑、删除、排序、分页和搜索。

4. 自定义生成代码

编辑 models/Product.php 添加规则:

public function rules()
{
    return [
        [['name', 'price'], 'required'],
        ['name', 'string', 'max' => 128],
        ['price', 'number', 'min' => 0],
        ['stock', 'integer', 'min' => 0],
        ['category', 'in', 'range' => ['Electronics', 'Clothing', 'Food', 'Books']],
        ['description', 'string', 'max' => 500],
    ];
}

5. 思考题

  1. 如何让 GridView 的 category 列显示为下拉过滤?
  2. 如何使用 Behavior 自动填充 created_at/updated_at?
  3. 如何将 Yii2 的 URL 美化应用到 CRUD 路由?

信息

路径
/tech-stacks/yii/tutorial/入门篇 - Gii CRUD 实战.md
更新时间
2026/5/31