Mục lục
Giới thiệu
Mình là một người tự học Laravel, nên có lẽ mình hiểu được sẽ khó khăn như thế nào nếu không ai hướng dẫn, chúng ta sẽ không biết nên học từ đâu và nên học gì tiếp theo. Trong quá trình học Laravel mình đã từng lạc lõng không biết nên học gì tiếp theo, và có lẽ một roadmap từ một người có kinh nghiệm sẽ giúp ích định hướng cho mình rất nhiều. Hôm nay mình giới thiệu đến các bạn roadmap từ Povilas Korop - chủ kênh LaravelDaily - ông đã có hơn 15 năm kinh nghiệm trong ngành lập trình, đây là tổng hợp từ hơn 20,000 giờ code của ông và sự đóng góp từ cộng đồng vì vậy rất đáng để tham khảo.
Những tài liệu dưới đây đa số là tiếng anh, mình sẽ cố gắng dịch trong thời gian gần nhất để cung cấp cho các bạn nguồn tài liệu tham khảo khi học Laravel. Chúng ta sẽ có 4 mức từ căn bản đến nâng cao như sau:
- Beginner Level (0-1 năm kinh nghiệm)
- Advanced Beginner Level (1-3 năm)
- Mid Level (3-5 năm kinh nghiệm)
- Senior Level (trên 5 năm)
Đây chỉ là mức tham khảo cho các bạn, tuỳ người sẽ có thể đi nhanh hơn hoặc chậm hơn, chuyện đó không quan trọng, hãy cố gắng học hỏi nhiều nhất có thể.
Beginner Level: Mức căn bản
Những kiến thức căn bản khi bạn mới bắt đầu về Laravel, khi học xong phần này bạn có thể làm được những trang web như blog cá nhân, trang web đại diện thương hiệu, ... là những trang web không yêu cầu cao về tính tương tác.
Ký hiệu: 📔 Laravel Docs 🎬 Video 📄 Bài viết 🔠 Khoá học. Bài viết có dấu ⭐ là bài viết tiếng Việt
Dự án mẫu mức Beginner: Blog Cá Nhân
Để có thể tiếp thu các kiến thức trên, bạn hãy thực thực hiện một ý tưởng như làm một trang web cá nhân theo gợi ý này. Trong link repo bên trên bạn sẽ tìm thấy yêu cầu về công việc sẽ làm và một số gợi ý để thực hiện.
Advanced Beginner Level: Mức trên căn bản
Ở mức Advanced, bạn đã có một kiến thức nền về Laravel, level này bạn sẽ tìm hiểu về các kỹ thuật nâng cao hơn về Laravel như Middleware, Authorization hay xây dựng API, mục tiêu sau khi hoàn thành level này bạn sẽ có thể tự tin tìm kiếm một công việc freelance cho mình.
Ký hiệu: 📔 Laravel Docs 🎬 Video 📄 Bài viết 🔠 Khoá học. Bài viết có dấu ⭐ là bài viết tiếng Việt
Topic |
Learning Links |
Routing nâng cao |
🎬 Laravel: 8 Tips for Advanced Routing 🎬 More videos
|
Route Model Binding |
📔 Route Model Binding 🎬 Laravel Route Model Binding: All You Need To Know 🎬 More videos |
Chuyển hướng trong Route |
📔 Redirect Routes
|
Middleware |
|
Tạo một Middleware |
📔 Defining Middleware
|
Database Advanced |
|
Tạp dữ liệu bằng Seeders and Factories |
📔 Database: Seeding 📔 Defining Model Factories 🎬 Laravel Factories: Generate and Re-use Fake Records 🎬 More videos |
Query Scopes trong Eloquent |
📔 Eloquent: Query Scopes 🎬 Same Eloquent Where Condition? Refactor into Local Scopes
|
Quan hệ đa hình (Polymorphic) |
📔 Polymorphic Relationships 🎬 Laravel.io Portal: Polymorphic Relations Example
|
Định dạng đầu ra và đầu vào trên Eloquent (Accessors và Mutators) |
📔 Accessors & Mutators
|
Collections trong Eloquent |
📔 Eloquent Collections 📔 General Laravel Collections
|
Xoá mềm (Soft Deletes) |
📔 Soft Deleting ⭐ Xoá dữ liệu của quan hệ con khi sử dụng Soft Deletes (cascade delete) |
Authentication nâng cao |
|
Phân quyền: Roles/Permissions, Gates, Policies |
📔 Authorization 🎬 Laravel Roles and Permissions: All CORE Things You Need To Know More videos |
Phân quyền: Một số package thường dùng - Spatie Permission, Bouncer, etc |
🎬 Spatie Laravel Permission: Example Project Review 📄 Two Best Laravel Packages to Manage Roles/Permissions 📔 spatie/laravel-permission 📔 JosephSilber/bouncer
|
Xác thực Email |
📔 Email Verification 🎬 How to Translate/Customize Laravel Auth Default Emails |
Upload file nâng cao |
🔠 File Uploads in Laravel
|
Drivers và Disks, Ví dụ về Amazon S3 |
📔 File Storage 🎬 Laravel: How to Upload Files to Amazon S3
|
Một số package: Spatie Medialibrary, Intervention Image, etc |
📔 spatie/laravel-medialibrary 📔 intervention/image 🎬 Spatie Media Library Pro: Laravel File Uploads with Great UX [REVIEW] 🎬 More videos
|
API căn bản |
🔠 How to Create Laravel API 🎬 Create Model with API Controller - in one Artisan Command Laravel API: Be Careful When Doing Changes
|
API Routes và Controllers |
📔 API Resource Routes 📔 Default Route Files 🎬 Junior Code Review: Simple Laravel API - in 5 Different Ways
|
Làm quen với các API Clients: Postman |
📔 Postman API Client
|
API Eloquent Resources |
📔 Eloquent: API Resources 🎬 Laravel API Result: Add Fields with Map or Appends
|
API Auth với Sanctum |
📔 Laravel Sanctum 🎬 Laravel API Auth with Sanctum and API Tokens 🎬 More videos
|
API Xử lý lỗi và các mã lỗi |
🎬 Laravel API 404 Error: Customize Exception Message 📄 HTTP Status Codes
|
Debug lỗi |
|
File log trong Laravel |
📔 Logging
|
Try-Catch và xử lý ngoại lệ |
📔 Error Handling 🎬 Exceptions in Laravel: Why/How to Use and Create Your Own
|
Các công cụ debug: Debugbar, Telescope, Ray |
📔 barryvdh/laravel-debugbar 📔 Laravel Telescope 📔 Spatie Ray (Premium Tool) 🎬 Debug Eloquent Queries from API: Laravel Telescope 🎬 Spatie Ray: Laravel Debugging with Pleasure
|
Tuỳ biến trang báo lỗi và thông điệp |
📔 Custom HTTP Error Pages 🎬 Laravel Error Pages: Change Text or Customize Layouts 🎬 New in Laravel 8.26: Override 404 Page with Route Missing
|
(optional) Một số tracker theo dõi khác: Bugsnag, Flare, Sentry, Rollbar |
📔 Bugsnag Laravel 📔 Flare Homepage 📔 Sentry Laravel 📔 Rollbar Laravel 🎬 Bug Tracking in Laravel: Bugsnag vs Flare [Demo/Review]
|
Gửi email |
🎬 Laravel: 3 Ways to Send a Welcome Email (Controller vs Observer vs Events) |
Hàm gửi mail trong Laravel |
📔 Mail & Mailables
|
Cấu hình dịch vụ mail: Mailgun, Mailtrap, etc |
📄 How to Send Email From Laravel, and Why We Need 3rd Party Providers For It 📔 Mail: Drivers Prerequisites
|
Hệ thống thông báo: Email, SMS, Slack, etc. |
📔 Notifications 🎬 Laravel Notifications: "Database" Driver - Demo Project |
Unit Testing với PHPUnit |
🎬 Why People (Don't) Write Automated Tests?
|
Kiểm thử mã nguồn căn bản |
📔 Testing: Getting Started 🔠 Laravel: PHPUnit Testing for Beginners 🎬 PHPUnit in Laravel: Simple Example of Why/How to Test
|
Cấu hình kiểm thử CSDL |
📔 Database Testing
|
Quản lý mã nguồn |
|
Quản lý mã nguồn với Git |
📔 Git 🎬 Git in Laravel. Part 1 - Branches: Main, Develop and Feature 🎬 [More videos](videos/git-version-control.md |
Triển khai lên Servers |
📔 Deployment 📄 How to Deploy Laravel Projects to Live Server: The Ultimate Guide 📄 What Server is Needed to Deploy Laravel Projects 🎬 How we Deploy Laravel: Branches, Staging Servers, Forge and Envoyer
|
Dự án mẫu mức Advanced Beginner: Hệ thống quản lý thông tin khách hàng CRM
Để có thể tiếp thu các kiến thức trên, bạn hãy thực thực hiện một ý tưởng như làm một trang web có tính liên kết dữ liệu như quản lý thông tin khách hàng, quản lý tồn kho, quản lý hộ khẩu, ...
Hoặc bạn cũng làm theo dự án này. Trong link repo bên trên bạn sẽ tìm thấy yêu cầu về công việc sẽ làm và một số gợi ý.
Mid Level: Mức trung bình
Các bài học dưới đây sẽ yêu cầu nhiều hơn về tối ưu một ứng dụng như xử lý Cache, Event hay quan trọng nhất là viết được Unit Testing. Thông thường lập trình viên Laravel với 3-5 năm kinh nghiệm thực tế sẽ có thể đặt đến cảnh giới này. Những kỹ năng dưới đây mình nghĩ là nên để nguyên bằng tiếng Anh, dịch ra tiếng Việt thì mất hay, một số cái dịch ra rồi cũng chả hiểu gì cả.
Ký hiệu: 📔 Laravel Docs 🎬 Video 📄 Bài viết 🔠 Khoá học. Bài viết có dấu ⭐ là bài viết tiếng Việt
Topic |
Learning Links |
**Tính năng bổ sung trên Routing ** |
|
Route Caching |
📔 Route Caching
|
Rate Limiting |
📔 Rate Limiting 🎬 Laravel: Create Public API with Cache and Rate Limits
|
Invokable controllers |
📔 Single Action Controllers
|
Database/Eloquent Extra Features |
|
Model Observers |
📔 Eloquent Observers 🎬 Laravel Model: Check if Any Field Was Changed 🎬 Eloquent Observers or Events Listeners? Which is Better?
|
Raw Database Queries |
📔 Query Builder: Raw Expressions
|
All Eloquent Features |
📔 All About Eloquent 🔠 Eloquent: Expert Level 📄 20 Laravel Eloquent Tips and Tricks 🎬 Laravel Collections: 5 Methods with Real Examples More videos
|
Various Extra Laravel Features |
|
Custom Blade Directives |
📔 Extending Blade
|
Events and Listeners |
📔 Events and Listeners 🎬 Laravel: 3 Ways to Send a Welcome Email (Controller vs Observer vs Events) 🎬 Laravel: Why Observers and Event Listeners are "Risky"
|
Laravel HTTP Client and Guzzle |
📔 HTTP Client 🎬 Laravel and External APIs: Get Data with HTTP Client
|
Login with X: Laravel Socialite |
📔 Laravel Socialite
|
Creating Artisan Commands |
📔 Writing Artisan Commands 🎬 How to Create Artisan Commands in Laravel
|
Task Scheduling |
📔 Task Scheduling 🎬 Laravel Task Scheduling: Run Artisan Command Hourly
|
Caching |
📔 Cache 🎬 Cache Eloquent Query Results to Load Pages Instantly
|
Real-time: Broadcasting, Echo and Pusher |
📔 Broadcasting
|
Jobs and Queues |
🔠 Queues in Laravel
|
Queueable Classes and Jobs |
📔 Creating Jobs 📔 Queueing Notifications 📔 Queued Event Listeners 📔 Queueing Mail 🎬 Laravel Queues 101: Example with Sending Emails
|
Job Dispatching, Batching and Chaining |
📔 Dispatching Jobs
|
Processing Failed Jobs |
📔 Dealing with Failed Jobs
|
Configuring Queues: Drivers, Redis, Supervisor |
📔 Running the Queue Worker 📔 Configuring Supervisor
|
Laravel Horizon (optional, if you use Redis) |
📔 Laravel Horizon
|
API Advanced |
|
Upload Files via API |
📄 Laravel API: How to Upload File from Vue.js
|
Generate API Documentation |
📄 Laravel API Documentation with OpenAPI/Swagger 🎬 Scribe: New Package for Laravel API Documentation
|
API Versioning |
📄 Versioning your REST API with Laravel 🎬 Versioning your API: from V1 to V2 and Beyond [video from my course]
|
API with OAuth and Laravel Passport |
📔 Laravel Passport 🎬 Laravel API Auth Demo: Passport, oAuth and Sanctum |
Only-API Projects with Front-end like Vue.js |
🔠 Vue.js + Laravel: CRUD with SPA
|
Only-API Projects with Mobile Apps |
📄 Using Sanctum to authenticate a mobile app
|
(optional) Starter Kits: Laravel Jetstream and Fortify |
|
Laravel Jetstream (requires Livewire/Inertia knowledge) |
📔 Laravel Jetstream 🔠 Laravel Jetstream+Livewire: Real Mini-Project 🎬 Laravel Jetstream: How it Works and Example How to Customize
|
Laravel Fortify |
📔 Laravel Fortify 🎬 Laravel Fortify: Four Auth Things to Customize
|
Payments |
|
Laravel Cashier with Stripe/Paddle |
📔 Laravel Cashier (Stripe) 📔 Laravel Cashier (Paddle)
|
Custom Payment Providers: PayPal, Mollie, etc |
📄 Subscription billing with Laravel Cashier for Mollie 📄 How To Integrate Paypal Payment Gateway In Laravel
|
Automated Testing Advanced |
|
TDD: Test-Driven Development |
🔠 Build A Laravel App With TDD 🔠 TDD With Laravel
|
Mocking |
📔 Mocking
|
(optional) Laravel Dusk |
📔 Laravel Dusk
|
Full-Text Search |
|
Laravel Scout |
📔 Laravel Scout
|
Drivers: ElasticSearch, Algolia or MeiliSearch |
📄 ElasticSearch Driver for Laravel Scout 📔 Algolia: Scout Extended 📄 Full-Text Search with MeiliSearch and Laravel Scout
|
Laravel Packages |
|
Contributing to Packages, making Pull Requests |
🎬 How to Contribute to Laravel Docs (or any open-source repository)
|
Create Laravel Packages |
📔 Package Development 🔠 Laravel Package Development
|
Senior Level: Mức lão luyện
Ở mức Senior, bạn cần quan tâm nhiều hơn về cấu trúc tổng thể dự án thay vì những kỹ năng đơn lẻ, một lập trình viên Senior sẽ bận tâm nhiều hơn về hàm nào nên nằm trong class nào hơn là làm sao để cho nó chạy.
Ký hiệu: 📔 Laravel Docs 🎬 Video 📄 Bài viết 🔠 Khoá học. Bài viết có dấu ⭐ là bài viết tiếng Việt
Kết bài
Có thể nói Laravel là một framework mạnh ở thời điểm hiện tại, tuy nhiên không ai biết trước được khi nào sẽ có một framework mới hiệu quả hơn, tuy nhiên cái cốt vẫn là tư duy, cách lập trình sau cho code đẹp, rõ ràng. Hy vọng rằng bài viết này sẽ cung cấp cho các bạn một định hướng để bạn có thể theo đuổi Laravel.