
Mình bắt đầu với bài Cơ bản về CI4 (Beginner).
Cơ bản về CI4
1.1. Giới thiệu CI4
CI3 vs CI4
- CI4 viết lại hoàn toàn theo chuẩn PHP 7+ & OOP, PSR-4 autoload.
- Có
spark
CLI hỗ trợ tạo code nhanh. - CI3 là procedural, CI4 là OOP.
⭢ Lời khuyên: nếu mới bắt đầu → học luôn CI4, không cần CI3.
1.2. Cài đặt CI4
- Yêu cầu môi trường
- PHP ≥ 7.4 (khuyến nghị PHP 8.1+)
- Composer
- Database: MySQL/MariaDB (Postgres, SQLite cũng được)
- Cài đặt bằng Composer
composer create-project codeigniter4/appstarter ci4-app cd ci4-app php spark serve
→ Truy cập:
http://localhost:8080
1.3. Cấu trúc thư mục CI4
ci4-app/
│── app/ # Code chính (Controller, Model, View)
│── public/ # Nơi chứa index.php (điểm vào)
│── writable/ # Cache, logs, session
│── system/ # Core framework
│── .env # Config môi trường
│── spark # CLI tool
⭢ Quan trọng nhất: app/
chính là nơi chúng ta code.
1.4. Routing cơ bản
- File:
app/Config/Routes.php
- Ví dụ:
$routes->get('/', 'Home::index'); // GET / $routes->get('/about', 'Page::about'); // GET /about $routes->post('/contact', 'Form::send'); // POST /contact
⭢ Mỗi route map tới Controller@Method
.
1.5. Controller
- Tạo controller:
php spark make:controller Hello
- File
app/Controllers/Hello.php
namespace App\Controllers; class Hello extends BaseController { public function index() { return "Hello World from CI4!"; } }
⭢ Truy cập: http://localhost:8080/hello
1.6. View
- Lưu file ở:
app/Views/hello.php
<h1>Hello, <?= $name; ?>!</h1>
- Trong Controller:
return view('hello', ['name' => 'Thanh']);
⭢ Kết quả: Hello, Thanh!
1.7. Model cơ bản
- Tạo model:
php spark make:model PostModel
- File
app/Models/PostModel.php
namespace App\Models; use CodeIgniter\Model; class PostModel extends Model { protected $table = 'posts'; protected $primaryKey = 'id'; protected $allowedFields = ['title', 'content']; }
- Sử dụng trong Controller:
$postModel = new \App\Models\PostModel(); $posts = $postModel->findAll(); return view('posts/index', ['posts' => $posts]);
1.8. Migration & Seeder
- Migration tạo bảng:
php spark make:migration CreatePostsTable
- File
app/Database/Migrations/xxxx_CreatePostsTable.php
public function up() { $this->forge->addField([ 'id' => [ 'type' => 'INT', 'unsigned' => true, 'auto_increment' => true ], 'title' => ['type' => 'VARCHAR', 'constraint' => 255], 'content' => ['type' => 'TEXT'], 'created_at' => ['type' => 'DATETIME', 'null' => true], 'updated_at' => ['type' => 'DATETIME', 'null' => true], ]); $this->forge->addKey('id', true); $this->forge->createTable('posts'); }
- Chạy migration:
php spark migrate
- Seeder (fake data):
php spark make:seeder PostSeeder
public function run() { $data = [ 'title' => 'Hello CI4', 'content' => 'Bài viết đầu tiên', ]; $this->db->table('posts')->insert($data); }
Chạy seeder:
php spark db:seed PostSeeder
✅ Sau mục 1, bạn sẽ biết:
- Cài đặt CI4
- Hiểu cấu trúc project
- Routing → Controller → View → Model → Database (CRUD cơ bản)
- Migration & Seeder để quản lý database
⭢ Bạn có muốn mình đi tiếp chi tiết Part 2: Làm việc với Database trong CI4 luôn không?