文档
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. 思考题
- 如何让 GridView 的 category 列显示为下拉过滤?
- 如何使用 Behavior 自动填充 created_at/updated_at?
- 如何将 Yii2 的 URL 美化应用到 CRUD 路由?