Mục Lục
Mục Lục
Hướng dẫn cài đặt môi trường [Bài Viết] Hướng dẫn cài composer [Bài Viết] Hướng dẫn tạo dự án Laravel đầu tay. [Bài Viết] Hướng dẫn cấu hình cơ sở dữ liệu và bật chức năng auth có sẵn trong Laravel [Bài Viết] Hướng dẫn cài theme Acacha AdminLTE cho Laravel [Bài Viết] Hướng dẫn tắt debug khi upload dự án laravel lên HOST Video Hướng dẫn cài đặt môi trường + tạo dự án + Tìm hiểu Route qua ví dụ - Lập trình Laravel Video Hướng dẫn cài đặt dự án Laravel + Cài đặt chức năng Auth (login + register) trong Laravel Tìm hiểu Route & View & Controller Video Tìm hiểu Route trong Laravel + Học lập trình laravel qua ví dụ Hello World, ax+b=0, Hiển thị danh sách sinh viên Video Tìm hiểu Route qua ví dụ quản lý sinh viên - Laravel Video Hướng dẫn tìm hiểu Route - Controller - View trong Laravel qua ví dụ Video Lập trình Laravel - Truyền dữ liệu từ Controller qua View - Ví dụ Hello World trong Laravel Phần 1 Video Lập trình Laravel - Truyền dữ liệu từ Controller qua View - Ví dụ Tính giai thừa trong Laravel Phần 2 Video Lập trình Laravel - Truyền dữ liệu từ Controller qua View - Ví dụ hiển thị danh sách sinh viên trong Laravel Phần 3 Tìm hiểu route + truyền dữ liệu từ controller tới view qua bài quản lý khách sạn- Lập trình Laravel Tìm hiểu route + truyền dữ liệu từ controller tới view qua bài quản lý sản phẩm - Lập trình Laravel Tìm hiểu Route - Controller - View trong Laravel Route: Giải phương trình bậc 2 (ax2 + bx + c = 0) bằng Laravel - Lập trình laravel BÀI TẬP LARAVEL CƠ BẢN - Lập Trình Laravel - Route → Controller → View QUẢN LÝ SINH VIÊN (KHÔNG DÙNG DATABASE) - Khóa học lập trình Laravel GET/POST trong Laravel Video Tìm hiểu GET/POST trong Laravel qua ví dụ nhập thông tin người dùng - Lập trình Laravel Quản lý sinh viên bằng Laravel - Lập trình Laravel Video Quản lý sinh viên bằng Laravel - Lập trình Laravel Layout - Blade Video Tìm hiểu Route - Blade (nhung css/js/photos) - cú pháp Blade - Xử lý GET/POST trong Laravel Video Hướng dẫn tìm hiểu layout trong Laravel - qua ví dụ tạo website tin tức - Lập Trình Laravel Bài Tập Học Layout thông qua clone website - Creative Theme Bootstrap Free - Lập trình Laravel Kết nối CSDL - Laravel Video Hướng dẫn tìm hiểu view, migration, seeder, db - laravel - Qua ví dụ quản lý sinh viên Video Học Laravel qua ví dụ thêm & hiển thị tài khoản người dung - DB::Insert - DB::get - Paginate - Khoá Học Laravel Tìm hiểu migration trong laravel - Lập trình laravel Chương trình quản lý điểm danh Aptech - Lập trình Laravel - Lập trình PHP/Laravel Video - Chương trình quản lý điểm danh Aptech - Lập trình Laravel - Lập trình PHP/Laravel Video Bài tập quản lý sách bằng Laravel - Full Source Code quản lý sách - Lập trình Laravel Ôn tập - Chương trình quản lý sách + danh mục sách - Lập trình PHP, Laravel Website thi trắc nghiệm lập trình Aptech - Lập trình laravel - Lập trình PHP Tạo 1 POS bán hàng cho siêu thị - Supper Market - Lập trình Laravel Video - Tạo 1 POS bán hàng cho siêu thị - Supper Market - Lập trình Laravel Video Hướng dẫn tim hiểu Pagination + model qua ví dụ quản lý sinh viên - Lập trình Laravel Tìm hiểu paginate trong laravel - Quản lý sản phẩm - Lập trình Laravel Ứng dụng Quản lý Sách trong Laravel Phân quyền - Chức năng nâng cao Video - Tìm hiểu Auth trong Laravel Video Phân Quyền-Hướng dẫn viết chức năng phân quyền người dùng theo role Lâp Trình PHP/Laravel Video API Resful Laravel - Hướng dẫn tạo API Resful bằng PHP/Laravel - Khóa học lập trình PHP/Laravel [Examination] Examination & Test + Website tra cứu luật giao thông đường bộ - Lập trình PHP - Lập trình Laravel [Examination] Bài tập ôn luyện kết thúc môn - Sử dụng Laravel + Ajax Thực Chiến: Web bán hàng Video Hướng dẫn tạo dự án super market - phần 1 - Laravel Video Hướng dẫn tạo dự án super market - phần 2- laravel Video Tạo giở hàng - học lập trình laravel qua project- Phần 3 - laravel Khóa Học Lập Trình Laravel Thực Chiến Video Source Code Dự Án - Thực Chiến Web Bán Hàng Video Phần 1 | Laravel | Web bán hàng - Giới thiệu công nghệ Video Phần 2 | Phân tích thiết kế CSDL (database) | Web bán hàng PHP/MySQL Video Phần 3 | Phân tích thiết kế CSDL (database) | Web bán hàng PHP/MySQL Video Phần 4 | Laravel | Thiết kế web bán hàng - Cài đặt dự án & Authetication & Migration CSDL Video Phần 5 | Laravel | Thực Chiến - Web Bán Hàng -Tích hợp template và chỉnh sửa trang đăng ký-đăng nhập Video Phần 6 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng Role trong dự án Video Phần 7 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng quản lý người dung trong dự án Video Phần 8 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng quản lý danh mục Video Phần 9 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng Quản lý sản phẩm Video Phần 10 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng Quản lý tin tức Video Phần 11 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng Quản lý phản hồi Video Phần 12 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng Quản lý đơn hàng Video Phần 13 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng bảo mật trong dự án Video Phần 14 | Laravel | Thực Chiến - Web Bán Hàng - Trang Chủ & Phân Layout Video Phần 15 | Laravel | Thực Chiến - Web Bán Hàng - FE Trang Sản Phẩm Video Phần 16 | Laravel | Thực Chiến - Web Bán Hàng - FE Trang Tin Tức Video Phần 17 | Laravel | Thực Chiến - Web Bán Hàng - FE Trang Liên Hệ Unlisted Video Phần 18 | Laravel | Thực Chiến - Web Bán Hàng - FE Trang Chi Tiết Tin Tức Video Phần 19 | Laravel | Thực Chiến - Web Bán Hàng - FE Chi Tiết Sản Phẩm Video Phần 20 | Laravel | Thực Chiến - Web Bán Hàng - Trang giỏ hàng Video Phần 21 | Laravel | Thực Chiến - Web Bán Hàng - Trang thanh toán & hoàn thành thanh toán Video Phần 22 | Laravel | Final | Hướng dẫn cài đặt dự án từ source code mẫu
Laravel Tutorial

[Video] Tìm hiểu Route trong Laravel + Học lập trình laravel qua ví dụ Hello World, ax+b=0, Hiển thị danh sách sinh viên

Phần 1


Phần 2:

Chữa bài tập > Tìm hiểu Route - Controller - View trong Laravel

Link Source Code

Mở bài

Nếu bạn mới bắt đầu học lập trình Laravel, chắc hẳn bạn sẽ nghe nhiều đến khái niệm Route (định tuyến). Đây là thành phần quan trọng nhất trong Laravel — nơi xác định cách người dùng truy cập vào các trang web và cách dữ liệu được phản hồi từ server. Route đóng vai trò như “bản đồ chỉ đường” giúp Laravel biết được khi nào cần hiển thị trang, khi nào cần xử lý logic, và khi nào cần gọi đến Controller.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu Route trong Laravel một cách dễ hiểu, qua các ví dụ thực tế như:

  • Hiển thị dòng chữ “Hello World”.

  • Giải phương trình bậc nhất dạng ax + b = 0.

  • Hiển thị danh sách sinh viên bằng Route và Controller.

Bài viết không chỉ giúp bạn hiểu rõ cách hoạt động của Route, mà còn giúp bạn nắm vững cách viết code Laravel đúng chuẩn, dễ bảo trì và mở rộng sau này. Hãy cùng bắt đầu hành trình khám phá sức mạnh của Route trong Laravel ngay bây giờ!

Tổng quan về Route trong Laravel

Route trong Laravel là nơi định nghĩa các URL mà ứng dụng của bạn có thể truy cập. Mỗi khi người dùng nhập đường dẫn vào trình duyệt, Laravel sẽ tìm trong tệp routes/web.php để xác định cách xử lý yêu cầu đó.

Laravel có 4 kiểu Route phổ biến:

  1. GET – Dùng để lấy dữ liệu hoặc hiển thị trang.

  2. POST – Dùng để gửi dữ liệu (ví dụ: form đăng ký, đăng nhập).

  3. PUT/PATCH – Dùng để cập nhật dữ liệu.

  4. DELETE – Dùng để xóa dữ liệu.

Ví dụ một route đơn giản:

Route::get('/hello', function () { return 'Hello World'; });

Khi bạn truy cập địa chỉ http://localhost:8000/hello, trình duyệt sẽ hiển thị dòng chữ Hello World.

Các tệp định nghĩa Route trong Laravel

Laravel chia nhỏ các Route theo mục đích:

  • routes/web.php: Dành cho các trang web thông thường.

  • routes/api.php: Dành cho các API.

  • routes/console.php: Dành cho lệnh Artisan.

  • routes/channels.php: Dành cho WebSocket và Broadcast.

Mặc định, khi bạn tạo dự án Laravel mới, hệ thống đã có sẵn các tệp này để bạn bắt đầu định nghĩa các Route ngay lập tức.

Cấu trúc và cú pháp cơ bản của Route

Laravel cung cấp nhiều cách định nghĩa Route linh hoạt:

1. Route cơ bản

Route::get('/welcome', function () { return view('welcome'); });

Khi người dùng truy cập /welcome, hệ thống sẽ hiển thị giao diện resources/views/welcome.blade.php.

2. Route có tham số

Route::get('/user/{name}', function ($name) { return "Xin chào, $name!"; });

Khi truy cập http://localhost:8000/user/Diep, trang web sẽ hiển thị:
👉 “Xin chào, Diep!”

3. Route có tham số mặc định

Route::get('/user/{name?}', function ($name = 'Khách') { return "Xin chào, $name!"; });

4. Route nhóm (Group)

Giúp gom các route chung prefix lại với nhau:

Route::prefix('admin')->group(function () { Route::get('/dashboard', function () { return 'Đây là trang quản trị'; }); });

Truy cập: http://localhost:8000/admin/dashboard.

Ví dụ 1: Hiển thị “Hello World” trong Laravel

Đây là ví dụ cơ bản nhất khi bạn bắt đầu học Laravel.
Mở tệp routes/web.php và thêm dòng:

Route::get('/hello', function () { return 'Hello World!'; });

Sau đó, chạy server bằng lệnh:

php artisan serve

Truy cập http://localhost:8000/hello, bạn sẽ thấy kết quả:
👉 Hello World!

Giải thích:

  • Route::get() là phương thức định nghĩa một route sử dụng HTTP GET.

  • /hello là đường dẫn URL mà người dùng truy cập.

  • Hàm function () { return 'Hello World!'; } là hành động (callback) sẽ chạy khi route này được gọi.

💡 Lời khuyên: Khi bạn chỉ cần thử nhanh, hãy viết route dạng callback. Còn khi dự án lớn, nên chuyển sang Controller để dễ quản lý.

Ví dụ 2: Giải phương trình bậc nhất ax + b = 0 trong Laravel

Phương trình bậc nhất là ví dụ tuyệt vời để rèn luyện kỹ năng xử lý dữ liệu – hiển thị kết quả trong Laravel.
Dưới đây là 4 cách khác nhau để thực hiện cùng một nhiệm vụ này.

Cách 1: Nhập trực tiếp qua URL (Route Parameters)

Đây là cách nhanh nhất để thử nghiệm:

Route::get('/giaiphuongtrinh/{a}/{b}', function ($a, $b) { if ($a == 0) { if ($b == 0) { return 'Phương trình có vô số nghiệm'; } else { return 'Phương trình vô nghiệm'; } } else { $x = -$b / $a; return "Nghiệm của phương trình là x = $x"; } });

Chạy thử:
http://localhost:8000/giaiphuongtrinh/2/4
👉 Kết quả: Nghiệm của phương trình là x = -2

💬 Giải thích:
Laravel tự động truyền giá trị {a}{b} từ URL vào biến $a, $b.
Đây là cách nhanh nhất để thử logic toán học mà không cần form hay Controller.

Cách 2: Nhập giá trị qua Form (Phương thức GET)

Bạn có thể tạo form nhập dữ liệu để thân thiện hơn với người dùng.
Thêm vào routes/web.php:

Route::get('/giaiphuongtrinh', function () { return view('giaiphuongtrinh'); }); Route::get('/ketqua', function (Illuminate\Http\Request $request) { $a = $request->a; $b = $request->b; if ($a == 0 && $b == 0) return 'Phương trình vô số nghiệm'; if ($a == 0 && $b != 0) return 'Phương trình vô nghiệm'; $x = -$b / $a; return "Nghiệm của phương trình là x = $x"; });

Tạo file resources/views/giaiphuongtrinh.blade.php:

<!DOCTYPE html> <html lang="vi"> <head> <meta charset="UTF-8"> <title>Giải phương trình ax + b = 0</title> </head> <body> <h2>Nhập a và b để giải phương trình:</h2> <form action="/ketqua" method="get"> <label>a: </label><input type="number" name="a" required><br><br> <label>b: </label><input type="number" name="b" required><br><br> <button type="submit">Giải phương trình</button> </form> </body> </html>

Chạy thử:
Truy cập http://localhost:8000/giaiphuongtrinh
Nhập a = 3, b = 9 → Kết quả: x = -3

💬 Ưu điểm: Thân thiện, dễ hiểu, không cần nhớ cú pháp URL.
💬 Nhược điểm: Dữ liệu hiện trên URL (ít bảo mật).

Cách 3: Gửi dữ liệu bằng Form (Phương thức POST)

Dành cho trường hợp bạn không muốn hiển thị tham số trên URL.

Route::get('/giaipt', function () { return view('giaipt_post'); }); Route::post('/giaipt', function (Illuminate\Http\Request $request) { $a = $request->input('a'); $b = $request->input('b'); if ($a == 0 && $b == 0) { return 'Phương trình vô số nghiệm'; } elseif ($a == 0) { return 'Phương trình vô nghiệm'; } else { $x = -$b / $a; return "Nghiệm của phương trình là x = $x"; } });

resources/views/giaipt_post.blade.php:

<!DOCTYPE html> <html lang="vi"> <head> <meta charset="UTF-8"> <title>Giải phương trình bằng POST</title> </head> <body> <h2>Nhập a và b:</h2> <form method="post" action="/giaipt"> @csrf <label>a:</label><input type="number" name="a" required><br><br> <label>b:</label><input type="number" name="b" required><br><br> <button type="submit">Giải phương trình</button> </form> </body> </html>

Ưu điểm: Bảo mật hơn, phù hợp với form dữ liệu lớn.
💡 Lời khuyên: Khi làm các chức năng như đăng nhập, đăng ký, hoặc form tính toán, bạn nên dùng POST thay vì GET.

Cách 4: Giải phương trình bằng Controller (Cách chuyên nghiệp)

Tạo Controller:

php artisan make:controller EquationController

Trong app/Http/Controllers/EquationController.php:

namespace App\Http\Controllers; use Illuminate\Http\Request; class EquationController extends Controller { public function index() { return view('equation'); } public function solve(Request $request) { $a = $request->a; $b = $request->b; if ($a == 0 && $b == 0) $result = 'Phương trình vô số nghiệm'; elseif ($a == 0) $result = 'Phương trình vô nghiệm'; else $result = 'Nghiệm là x = ' . (-$b / $a); return view('equation', ['result' => $result]); } }

Thêm Route:

Route::get('/equation', [EquationController::class, 'index']); Route::post('/equation', [EquationController::class, 'solve']);

Tạo resources/views/equation.blade.php:

<h2>Giải phương trình bậc nhất ax + b = 0</h2> <form method="post" action="/equation"> @csrf <input type="number" name="a" placeholder="Nhập a" required> <input type="number" name="b" placeholder="Nhập b" required> <button type="submit">Giải</button> </form> @if(isset($result)) <h3>Kết quả: {{ $result }}</h3> @endif

Kết quả:
Người dùng nhập a, b → Hệ thống hiển thị nghiệm ngay trên cùng trang.
💬 Ưu điểm: Code gọn, tách biệt logic, dễ tái sử dụng — phù hợp cho dự án thực tế.

Ví dụ 3: Hiển thị danh sách sinh viên qua Route

Giờ chúng ta sẽ xây dựng một ví dụ “thật” hơn: hiển thị danh sách sinh viên từ dữ liệu giả định.

Bước 1: Tạo route hiển thị danh sách

Trong web.php:

Route::get('/students', function () { $students = [ ['id' => 1, 'name' => 'Nguyễn Văn A', 'age' => 20], ['id' => 2, 'name' => 'Trần Thị B', 'age' => 21], ['id' => 3, 'name' => 'Lê Văn C', 'age' => 19], ]; return view('students', ['students' => $students]); });

Bước 2: Tạo file hiển thị trong resources/views/students.blade.php

<!DOCTYPE html> <html lang="vi"> <head> <meta charset="UTF-8"> <title>Danh sách sinh viên</title> </head> <body> <h2>Danh sách sinh viên</h2> <table border="1" cellpadding="8"> <tr> <th>ID</th> <th>Họ và tên</th> <th>Tuổi</th> </tr> @foreach($students as $student) <tr> <td>{{ $student['id'] }}</td> <td>{{ $student['name'] }}</td> <td>{{ $student['age'] }}</td> </tr> @endforeach </table> </body> </html>

Kết quả:

Khi truy cập http://localhost:8000/students, bạn sẽ thấy bảng danh sách sinh viên được hiển thị rõ ràng.

💡 Gợi ý nâng cao:
Bạn có thể thay mảng dữ liệu bằng dữ liệu thật từ CSDL MySQL bằng cách tạo Model Student và gọi Student::all().

Tổ chức Route hợp lý trong dự án Laravel lớn

Khi dự án mở rộng, số lượng Route có thể lên đến hàng trăm. Để quản lý hiệu quả, bạn nên:

  • Sử dụng Controller: Tách logic ra khỏi web.php.

  • Dùng Route name: Giúp gọi lại dễ hơn trong view hoặc redirect.

  • Group và Middleware: Gom nhóm các route có chung đặc điểm (ví dụ: admin, user).

Ví dụ:

Route::middleware(['auth'])->group(function () { Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard'); });

Lời khuyên cho người mới học Route Laravel

  1. Bắt đầu từ những ví dụ nhỏ, như Hello World, rồi mở rộng dần.

  2. Luôn chạy lệnh php artisan route:list để xem toàn bộ danh sách route hiện tại.

  3. Sử dụng Controller thay vì viết logic trực tiếp trong route.

  4. Áp dụng RESTful routing khi làm việc với CRUD.

  5. Kết hợp Blade template để hiển thị giao diện chuyên nghiệp.

Kết luận

Qua bài viết này, bạn đã nắm được:

  • Khái niệm và vai trò của Route trong Laravel.

  • Cách sử dụng Route để tạo Hello World, giải phương trình ax + b = 0, và hiển thị danh sách sinh viên.

  • Cách tổ chức Route khoa học, dễ mở rộng và bảo trì.

Học lập trình Laravel không khó nếu bạn bắt đầu từ những ví dụ nhỏ, hiểu bản chất rồi dần dần phát triển thành hệ thống hoàn chỉnh. Laravel chính là lựa chọn lý tưởng cho những ai muốn xây dựng website nhanh, bảo mật và mạnh mẽ.

👉 Nếu bạn cảm thấy bài viết hữu ích, hãy chia sẻ cho bạn bè cùng học Laravel nhé!
Đừng quên theo dõi các bài tiếp theo trong chuỗi “Học lập trình Laravel từ A đến Z” để cùng nhau chinh phục framework mạnh mẽ nhất của PHP này.



Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó

×