Tạo bởi Trần Văn Điêp|
Học Laravel

[Video] Quản lý sinh viên bằng Laravel - Lập trình Laravel

Mở bài

Trong hành trình học lập trình web với Laravel, việc xây dựng một ứng dụng quản lý sinh viên là một trong những bài tập thực tế giúp bạn hiểu sâu hơn về cách route, controller, view, sessionCRUD (Create - Read - Update - Delete) hoạt động. Đây không chỉ là một ví dụ cơ bản, mà còn là nền tảng cho các ứng dụng quản lý phức tạp hơn sau này như quản lý sản phẩm, khách hàng, hoặc nhân viên.

Laravel được đánh giá là framework PHP mạnh mẽ, dễ học và linh hoạt. Nhờ cấu trúc rõ ràng theo mô hình MVC (Model - View - Controller), lập trình viên có thể dễ dàng tổ chức và mở rộng mã nguồn. Trong bài viết này, chúng ta sẽ cùng nhau xây dựng một ứng dụng quản lý sinh viên trong Laravel, hỗ trợ các chức năng thêm, sửa, xoá và hiển thị danh sách sinh viên, đồng thời lưu trữ dữ liệu tạm thời bằng session thay vì cơ sở dữ liệu — giúp bạn hiểu rõ cách dữ liệu di chuyển trong hệ thống Laravel.

Hãy cùng bắt đầu và từng bước tìm hiểu cách mà Laravel giúp bạn triển khai ứng dụng quản lý sinh viên một cách nhanh chóng, trực quan và chuyên nghiệp!


Tìm hiểu ý tưởng ứng dụng quản lý sinh viên

Trước khi đi sâu vào phần lập trình, hãy cùng xác định mục tiêu của ứng dụng:

  • Người dùng có thể thêm sinh viên mới (gồm họ tên, mã sinh viên, tuổi, lớp, địa chỉ).

  • Cho phép hiển thị danh sách sinh viên dưới dạng bảng.

  • Có thể chỉnh sửa thông tin sinh viên khi cần cập nhật.

  • Hỗ trợ xoá sinh viên khỏi danh sách.

  • Dữ liệu lưu trong session thay vì cơ sở dữ liệu (phù hợp với ứng dụng demo hoặc học tập).

Ứng dụng sẽ giúp bạn hiểu rõ hơn về:

  • Cách Laravel xử lý route để điều hướng người dùng.

  • Cách controller nhận dữ liệu từ form, xử lý logic và gửi lại dữ liệu ra view.

  • Cách session được dùng để lưu trữ tạm thời dữ liệu giữa các request.


Cấu trúc dự án Laravel

Khi khởi tạo một dự án mới, Laravel sẽ tự động tạo ra cấu trúc thư mục cơ bản:

app/ └── Http/ └── Controllers/ resources/ └── views/ routes/ └── web.php

Trong ứng dụng quản lý sinh viên, chúng ta sẽ tập trung vào 3 thành phần chính:

  1. Route (routes/web.php) – điều hướng các request.

  2. Controller (StudentController) – xử lý logic.

  3. View (Blade template) – hiển thị giao diện cho người dùng.


Tạo mới Controller cho sinh viên

Đầu tiên, mở Terminal và chạy lệnh:

php artisan make:controller StudentController

Laravel sẽ tự động tạo file app/Http/Controllers/StudentController.php.
Trong file này, chúng ta sẽ viết các hàm tương ứng với từng chức năng CRUD:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class StudentController extends Controller { public function index(Request $request) { $students = $request->session()->get('students', []); return view('students.index', compact('students')); } public function create() { return view('students.create'); } public function store(Request $request) { $students = $request->session()->get('students', []); $students[] = [ 'id' => uniqid(), 'name' => $request->name, 'age' => $request->age, 'class' => $request->class, 'address' => $request->address, ]; $request->session()->put('students', $students); return redirect()->route('students.index'); } public function edit($id, Request $request) { $students = $request->session()->get('students', []); $student = collect($students)->firstWhere('id', $id); return view('students.edit', compact('student')); } public function update(Request $request, $id) { $students = $request->session()->get('students', []); foreach ($students as &$student) { if ($student['id'] == $id) { $student['name'] = $request->name; $student['age'] = $request->age; $student['class'] = $request->class; $student['address'] = $request->address; break; } } $request->session()->put('students', $students); return redirect()->route('students.index'); } public function destroy($id, Request $request) { $students = $request->session()->get('students', []); $students = array_filter($students, fn($student) => $student['id'] != $id); $request->session()->put('students', $students); return redirect()->route('students.index'); } }

Khai báo route cho ứng dụng quản lý sinh viên

Tiếp theo, mở file routes/web.php và thêm:

use App\Http\Controllers\StudentController; Route::get('/students', [StudentController::class, 'index'])->name('students.index'); Route::get('/students/create', [StudentController::class, 'create'])->name('students.create'); Route::post('/students', [StudentController::class, 'store'])->name('students.store'); Route::get('/students/edit/{id}', [StudentController::class, 'edit'])->name('students.edit'); Route::post('/students/update/{id}', [StudentController::class, 'update'])->name('students.update'); Route::get('/students/delete/{id}', [StudentController::class, 'destroy'])->name('students.destroy');

Laravel sẽ điều hướng người dùng đến các hành động tương ứng trong StudentController.


Xây dựng giao diện hiển thị danh sách sinh viên (View)

Tạo thư mục resources/views/students/ và thêm file index.blade.php:

<!DOCTYPE html> <html> <head> <title>Danh sách sinh viên</title> </head> <body> <h1>Danh sách sinh viên</h1> <a href="{{ route('students.create') }}">➕ Thêm sinh viên mới</a> <table border="1" cellpadding="8"> <thead> <tr> <th>Họ tên</th> <th>Tuổi</th> <th>Lớp</th> <th>Địa chỉ</th> <th>Hành động</th> </tr> </thead> <tbody> @forelse($students as $student) <tr> <td>{{ $student['name'] }}</td> <td>{{ $student['age'] }}</td> <td>{{ $student['class'] }}</td> <td>{{ $student['address'] }}</td> <td> <a href="{{ route('students.edit', $student['id']) }}">✏️ Sửa</a> | <a href="{{ route('students.destroy', $student['id']) }}">🗑️ Xoá</a> </td> </tr> @empty <tr><td colspan="5">Chưa có sinh viên nào</td></tr> @endforelse </tbody> </table> </body> </html>

Form thêm sinh viên mới

Tạo file create.blade.php:

<h2>Thêm sinh viên mới</h2> <form method="POST" action="{{ route('students.store') }}"> @csrf <label>Họ tên:</label><input type="text" name="name" required><br> <label>Tuổi:</label><input type="number" name="age" required><br> <label>Lớp:</label><input type="text" name="class" required><br> <label>Địa chỉ:</label><input type="text" name="address" required><br> <button type="submit">Lưu</button> </form>

Form chỉnh sửa sinh viên

Tạo file edit.blade.php:

<h2>Chỉnh sửa thông tin sinh viên</h2> <form method="POST" action="{{ route('students.update', $student['id']) }}"> @csrf <label>Họ tên:</label><input type="text" name="name" value="{{ $student['name'] }}" required><br> <label>Tuổi:</label><input type="number" name="age" value="{{ $student['age'] }}" required><br> <label>Lớp:</label><input type="text" name="class" value="{{ $student['class'] }}" required><br> <label>Địa chỉ:</label><input type="text" name="address" value="{{ $student['address'] }}" required><br> <button type="submit">Cập nhật</button> </form>

Cách Laravel lưu trữ dữ liệu bằng session

Trong bài này, thay vì dùng cơ sở dữ liệu, chúng ta sử dụng session – nơi Laravel lưu dữ liệu tạm thời cho từng người dùng.

Laravel hỗ trợ các phương thức:

  • $request->session()->put('key', $value) – lưu giá trị.

  • $request->session()->get('key') – lấy giá trị.

  • $request->session()->forget('key') – xoá giá trị.

Điều này giúp bạn mô phỏng cơ sở dữ liệu một cách nhanh chóng mà không cần cấu hình MySQL.


Lợi ích khi sử dụng session thay vì database trong giai đoạn học tập

  • Dễ thử nghiệm: Không cần setup phức tạp.

  • Nhanh gọn: Không tốn thời gian cấu hình migration, model.

  • Hiểu rõ hơn: Bạn dễ quan sát luồng dữ liệu đi qua các lớp Controller → View.

  • Thích hợp cho demo, prototype hoặc bài giảng.

Tuy nhiên, hãy nhớ rằng session chỉ lưu tạm thời, dữ liệu sẽ mất khi session hết hạn hoặc server khởi động lại.
Khi làm ứng dụng thực tế, bạn nên chuyển sang sử dụng database với Eloquent ORM của Laravel.


Tổng kết

Qua bài hướng dẫn này, bạn đã nắm được:

  • Cách khởi tạo route, controller và view trong Laravel.

  • Cách truyền dữ liệu từ controller qua view bằng session.

  • Cách thực hiện CRUD cơ bản (thêm, sửa, xoá, hiển thị) mà không cần cơ sở dữ liệu.

  • Hiểu rõ cơ chế session và ứng dụng nó trong bài tập quản lý sinh viên.

Bài tập này là nền tảng tuyệt vời giúp bạn chuẩn bị cho các phần nâng cao hơn trong Laravel như:

  • Kết nối database bằng Eloquent ORM

  • Quản lý người dùng bằng Auth

  • Xây dựng giao diện với Blade Template Engine

Nếu bạn đang bắt đầu học Laravel, hãy thử tự mình nâng cấp ứng dụng này:
Thêm chức năng tìm kiếm, phân trang hoặc lưu vào database — đó chính là bước tiến vững chắc để trở thành một Laravel Developer chuyên nghiệp.

👉 Hãy tiếp tục theo dõi series “Lập trình Laravel từ cơ bản đến nâng cao” để không bỏ lỡ những bài thực hành tiếp theo!

Phản hồi từ học viên

5

Tổng 0 đánh giá

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

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