Lập trình · 18/09/2026

Học Laravel 13 – Bài 37: Tính năng mới Laravel 13 và tổng kết dự án TaskFlow

Bài 37 — Laravel 13 qua dự án TaskFlow: Kết thúc khóa học không phải là bật tất cả tính năng mới. Mục tiêu là giải thích được quyết định kỹ thuật, chứng minh quyền truy cập và biết phần nào còn phải kiểm chứng trước khi vận hành thật. Bài này cập nhật bài giới thiệu Laravel 13 hiện có, giữ nguyên URL để người đọc cũ tiếp tục truy cập.

Những tính năng mới trong Laravel 13 đáng chú ý

Bài 37 — Laravel 13 qua dự án TaskFlow: Kết thúc khóa học không phải là bật tất cả tính năng mới. Mục tiêu là giải thích được quyết định kỹ thuật, chứng minh quyền truy cập và biết phần nào còn phải kiểm chứng trước khi vận hành thật. Bài này cập nhật bài giới thiệu Laravel 13 hiện có, giữ nguyên URL để người đọc cũ tiếp tục truy cập.

1. Đặt phiên bản vào đúng bối cảnh

Laravel 13 yêu cầu PHP tối thiểu 8.3. Dự án thực hành đang khóa framework 13.32.0 và chạy kiểm thử với PHP 8.4.25; đây là checkpoint của khóa học, không phải lời khẳng định phiên bản mới nhất. Xem composer.lock và composer check-platform-reqs để biết yêu cầu của toàn bộ graph, bao gồm công cụ test. Không suy ra bộ dev dependencies chạy được trên mọi phiên bản PHP mà framework hỗ trợ.

Release notes chính thức giới thiệu AI SDK, JSON:API Resources, tìm kiếm vector, bảo vệ request theo origin, queue routing và các attribute mới. Hãy dùng danh sách này để xác định nhu cầu, không dùng như checklist bắt buộc cài thêm package.

2. Những gì TaskFlow đã thực sự xây dựng

NhómĐã triển khaiGiới hạn cần nhớ
Dữ liệuProject, Task, assignee, file đính kèm; validation, query filter và eager loadingKhông có chức năng chia sẻ dự án hoặc chuyển owner
Truy cậpSession login, policy owner, bearer token với abilities và revokeKhông có public signup, password recovery hay MFA
Bất đồng bộJob invalidation, notification và sự kiện bảng task sau commitKhông có transactional outbox; worker phải được vận hành riêng
Vận hànhHealth command, restore drill, mẫu Nginx/systemd, workflow CIChưa triển khai TaskFlow lên Linux production hoặc chạy hosted CI

REST endpoint của TaskFlow dùng JsonResource thông thường, không tự động trở thành JSON:API. Query tìm task là tìm theo điều kiện văn bản, không phải semantic search. Không có AI SDK hay pipeline embeddings trong checkpoint. Phân biệt rõ điều này giúp tài liệu không hứa những gì mã nguồn chưa làm.

3. Bảo vệ request: đọc middleware đang chạy

Laravel 13 có PreventRequestForgery hỗ trợ kiểm tra origin bên cạnh cơ chế CSRF token. TaskFlow vẫn đưa token vào form và request của frontend. Không bỏ bảo vệ chỉ vì ứng dụng dùng JSON; endpoint session trong web.php và bearer endpoint trong api.php có mô hình xác thực khác nhau.

Bài 22 kiểm tra các trường hợp origin/token trong môi trường test phù hợp. Khi nâng framework, chạy lại test thay vì dựa vào tên middleware cũ hoặc kỳ vọng mọi request thiếu token đều có cùng kết quả. Authorization vẫn là lớp độc lập: vượt qua CSRF không cấp quyền đọc project của người khác.

4. Queue routing và attribute: đổi cách khai báo, không bỏ vận hành

Queue::route cho phép định tuyến job theo class. Các attribute mới tạo thêm lựa chọn khai báo middleware, authorization hoặc hành vi job. TaskFlow hiện giữ cấu hình queue và policy tường minh ở mã ứng dụng để người học dễ lần theo; không cần chuyển toàn bộ chỉ vì có cú pháp mới.

Nếu thử chuyển một job sang routing tập trung, hãy kiểm tra connection, tên queue và worker đang nghe đúng queue đó. Giữ kiểm thử after-commit, rollback không dispatch, retry và quyền truy cập. Attribute không thay thế idempotency, timeout, giám sát failed job hoặc quy trình restart worker khi đổi release.

5. Bài tập mở rộng: chọn một nhu cầu thật

Gợi ý task bằng AI: trước khi viết tích hợp, xác định dữ liệu nào được phép gửi ra ngoài, ngân sách, timeout và hành vi khi provider lỗi. Nội dung sinh ra chỉ là đề xuất; không tự động tạo task cho project mà người gọi không có quyền. Cần test giới hạn đầu vào, chi phí và quyền owner.

Tìm kiếm semantic: bắt đầu bằng tập câu hỏi và kết quả mong đợi. Lọc quyền project trước khi trả kết quả; không để điểm similarity trở thành đường vòng qua policy. Thiết kế xử lý xóa dữ liệu, cập nhật embedding và kiểm chứng backend database riêng. Đây là bài tập đề xuất, không phải tính năng đã có trong SQLite demo.

JSON:API: chỉ chọn khi client cần contract đó. Định nghĩa schema, relationships, fieldsets, lỗi và pagination trước; thêm contract test để việc đổi resource không âm thầm phá client hiện tại. Có thể mở endpoint version mới thay vì đổi response đang được dùng.

6. Bài kiểm tra kết thúc khóa

  1. Tạo project và task bằng owner; chứng minh user khác bị từ chối bằng test.
  2. Giải thích vì sao token có ability vẫn cần policy và vì sao file riêng tư không nằm trên public disk.
  3. Hoàn thành task hai lần và giải thích cách tránh ghi đè trạng thái cạnh tranh.
  4. Chạy suite, frontend build và Reverb smoke test; phân biệt queue fake với worker thật.
  5. Thực hiện restore drill cô lập; nêu dữ liệu, khóa mã hóa và kiểm tra còn thiếu để đáp ứng RPO/RTO thực tế.
  6. Đọc mẫu deploy, chỉ ra bước nào cần operator thực hiện trên server và cách rollback mà không tự động đảo migration.
composer check-platform-reqs
vendor/bin/pint --test
php artisan test
npm run build
node tests/reverb-smoke.mjs

Baseline hiện tại là 102 tests/465 assertions. Số test không phải chứng nhận production-ready: SQLite, fake mail/storage và test đồng bộ không bao phủ toàn bộ hạ tầng thật. Lưu bằng chứng môi trường, commit, runtime và kết quả mỗi lần kiểm chứng; không ghi token vào báo cáo.

7. Bước tiếp theo

Chọn một cải tiến nhỏ, viết acceptance criteria rồi thêm test trước khi mở rộng. Với hệ thống thật, ưu tiên hoàn thiện tài khoản, backup, monitoring, worker và phân quyền theo yêu cầu sản phẩm. Đọc upgrade guide Laravel 13 khi chuyển dự án cũ, và giữ dependency trong lockfile đã review.

Điều hướng: Bài 36: Nâng cấp và dependency · Lộ trình TaskFlow.

Điều hướng khóa học Laravel 13

Bài trước (36) · Mục lục trọn bộ 37 bài

Thảo luận

Bình luận 0

Đăng nhập để bình luận

Bạn cần có tài khoản để tham gia thảo luận và trả lời độc giả khác.

Đăng nhậpĐăng ký

Chưa có bình luận. Hãy là người đầu tiên chia sẻ ý kiến.