Tạo CRUD nhanh với Gii
Bài học này hướng dẫn học viên cách sử dụng Gii – công cụ sinh mã tự động của Yii – để tạo nhanh các chức năng CRUD (Create, Read, Update, Delete) cho một bảng trong cơ sở dữ liệu. Học viên sẽ học cách cài đặt Gii, sử dụng trình tạo CRUD, và hiểu cách tùy chỉnh mã nguồn được sinh ra để phục vụ các nhu cầu thực tế.

1. Gii là gì?
- Gii là một module do Yii cung cấp, giúp tự động sinh mã nguồn cho các thành phần như Model, Controller, CRUD, Form, Module, v.v.
- Gii giúp tăng tốc phát triển ứng dụng, giảm thiểu sai sót khi viết mã thủ công.
2. Kích hoạt Gii
Mở file config/web.php
, thêm hoặc kiểm tra cấu hình:
if (YII_ENV_DEV) {
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
Truy cập Gii trong trình duyệt:
http://localhost/index.php?r=gii
3. Tạo CRUD bằng Gii
-
Truy cập: Gii Home > CRUD Generator
-
Nhập các thông tin:
-
Model Class:
app\models\Post
-
Search Model Class:
app\models\PostSearch
-
Controller Class:
app\controllers\PostController
-
Model Class:
-
Nhấn Preview, sau đó chọn Generate
Kết quả:
- Controller:
controllers/PostController.php
- View:
views/post/
- Search Model:
models/PostSearch.php
4. Cấu trúc CRUD được sinh ra
Gii tạo sẵn các chức năng:
-
index
– hiển thị danh sách bản ghi, có phân trang và tìm kiếm -
view
– hiển thị chi tiết bản ghi -
create
– tạo bản ghi mới -
update
– cập nhật bản ghi -
delete
– xóa bản ghi
5. Truy cập giao diện CRUD
Sau khi tạo xong, có thể truy cập:
http://localhost/index.php?r=post
Các URL tương ứng:
- Danh sách:
/index.php?r=post/index
- Tạo mới:
/index.php?r=post/create
- Cập nhật:
/index.php?r=post/update&id=1
- Xóa:
/index.php?r=post/delete&id=1
- Xem chi tiết:
/index.php?r=post/view&id=1
6. Tùy chỉnh code sinh ra từ Gii
Các phần thường được tùy chỉnh gồm:
a) Giao diện View
Mở file views/post/index.php
, sửa lại tiêu đề:
$this->title = 'Danh sách bài viết';
b) Cập nhật các trường hiển thị
Trong views/post/index.php
:
[
'class' => 'yii\grid\GridView',
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'title',
'created_at',
['class' => 'yii\grid\ActionColumn'],
],
];
Có thể thêm hoặc bớt các trường tùy theo yêu cầu.
c) Tùy chỉnh logic trong Controller
Trong PostController.php
, bạn có thể thêm xử lý sau khi lưu:
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('success', 'Bài viết đã được lưu');
return $this->redirect(['view', 'id' => $model->id]);
}
Ví dụ cụ thể
1. Giả sử bạn đã có bảng post
trong CSDL:
CREATE TABLE post (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
content TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
2. Thực hiện các bước:
- Dùng Gii tạo Model
Post
- Dùng Gii tạo CRUD cho model
Post
- Truy cập:
http://localhost/index.php?r=post
- Tạo, sửa, xóa bài viết thông qua giao diện có sẵn
Kết luận
Sử dụng Gii để tạo CRUD giúp tiết kiệm thời gian và chuẩn hóa cách xây dựng chức năng quản lý dữ liệu trong ứng dụng Yii. Tuy nhiên, cần hiểu rõ mã nguồn được sinh ra để có thể tùy chỉnh hợp lý theo yêu cầu thực tế. Việc tùy chỉnh controller, view và giao diện tìm kiếm là rất cần thiết để nâng cấp từ mức mặc định lên mức chuyên nghiệp.

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com