[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
Mở bài
Trong hành trình học lập trình Laravel, một trong những khái niệm quan trọng mà bất kỳ lập trình viên nào cũng cần nắm vững là phương thức GET và POST. Đây là hai phương thức cơ bản trong giao tiếp giữa client (trình duyệt) và server (máy chủ), đóng vai trò nền tảng trong việc gửi và nhận dữ liệu. Laravel — với triết lý “simple yet powerful” — đã cung cấp một cách tiếp cận cực kỳ thân thiện để làm việc với GET/POST thông qua route, controller, và request.
Nếu bạn từng băn khoăn làm thế nào để lấy dữ liệu người dùng từ form HTML và xử lý nó trong backend Laravel, thì bài viết này chính là dành cho bạn. Chúng ta sẽ cùng nhau tìm hiểu GET/POST trong Laravel qua ví dụ nhập thông tin người dùng, từng bước rõ ràng, có ví dụ thực tế, mã nguồn minh họa và giải thích chi tiết.
Sau bài viết này, bạn sẽ:
-
Hiểu rõ sự khác biệt giữa GET và POST trong Laravel.
-
Biết cách khai báo route và form tương ứng.
-
Viết controller nhận dữ liệu, xử lý và trả kết quả ra view.
-
Áp dụng best practices trong việc bảo mật và tối ưu code.
Cùng bắt đầu khám phá và làm chủ cơ chế GET/POST trong Laravel để biến các form HTML của bạn trở nên sống động và tương tác mạnh mẽ hơn bao giờ hết.
Tìm hiểu cơ bản về phương thức GET và POST
GET là gì?
Phương thức GET được sử dụng để lấy dữ liệu từ server. Khi bạn truy cập một URL hoặc gửi form bằng GET, dữ liệu sẽ được gửi qua tham số query string trong URL, ví dụ:
Đặc điểm của GET:
-
Dữ liệu hiển thị trên thanh địa chỉ.
-
Thường dùng để tìm kiếm, lọc dữ liệu, không nên dùng để gửi thông tin nhạy cảm.
-
Giới hạn kích thước dữ liệu (tùy trình duyệt).
POST là gì?
Ngược lại, POST dùng để gửi dữ liệu tới server để xử lý hoặc lưu vào cơ sở dữ liệu. Dữ liệu không hiển thị trên thanh địa chỉ, được gửi ngầm qua body của request.
Đặc điểm của POST:
-
Dữ liệu bảo mật hơn so với GET.
-
Thường dùng cho form đăng ký, đăng nhập, tạo mới bản ghi.
-
Không giới hạn độ dài dữ liệu.
Laravel hỗ trợ cả hai phương thức này một cách trực quan thông qua Route::get() và Route::post(), cho phép bạn tách biệt logic xử lý cho từng loại request.
Tạo project và cấu hình cơ bản trong Laravel
Trước tiên, bạn cần khởi tạo một dự án Laravel mới để thực hành ví dụ:
Cấu hình kết nối database (nếu cần) trong file .env, nhưng với ví dụ nhập thông tin người dùng này, ta có thể xử lý ngay trong controller mà không cần database.
Tiếp theo, chạy lệnh để khởi động server:
Khi truy cập http://127.0.0.1:8000, bạn sẽ thấy giao diện mặc định của Laravel. Từ đây, ta bắt đầu thực hiện ví dụ minh họa GET/POST.
Định nghĩa route GET và POST trong Laravel
Trong Laravel, các route (đường dẫn) được khai báo trong file routes/web.php. Route có thể lắng nghe nhiều loại request khác nhau, tùy vào phương thức HTTP.
Ví dụ, ta tạo một form nhập thông tin người dùng với 2 bước:
-
Hiển thị form nhập (GET request).
-
Xử lý khi người dùng gửi form (POST request).
Mở file routes/web.php và thêm:
-
Route::get()được dùng để hiển thị form. -
Route::post()xử lý dữ liệu khi người dùng nhấn nút Submit. -
Dùng
name()để đặt tên route, giúp dễ dàng tham chiếu trong view.
Tạo Controller để xử lý GET/POST
Tiếp theo, ta tạo UserController để viết logic xử lý dữ liệu.
Chạy lệnh:
Trong file app/Http/Controllers/UserController.php, thêm nội dung:
Ở đây, ta đã sử dụng đối tượng Request — công cụ mạnh mẽ của Laravel để nhận, kiểm tra và xử lý dữ liệu.
Tạo View hiển thị form nhập thông tin người dùng
Laravel dùng Blade Template Engine để tạo view.
Tạo file resources/views/user/form.blade.php:
Một vài điểm đáng chú ý:
-
Sử dụng
@csrfđể thêm token bảo mật chống tấn công CSRF. -
old('field')giúp giữ lại dữ liệu cũ khi validate lỗi. -
$errors->any()hiển thị danh sách lỗi trả về từ validate.
Khi truy cập /user/form, bạn sẽ thấy form nhập thông tin người dùng sẵn sàng gửi dữ liệu bằng phương thức POST.
Hiển thị kết quả sau khi gửi form
Tạo view resources/views/user/result.blade.php:
Giờ khi bạn điền form và bấm “Gửi thông tin”, dữ liệu sẽ được gửi qua POST đến controller, xử lý và truyền ngược trở lại view này để hiển thị.
Phân tích luồng hoạt động của GET/POST trong Laravel
-
GET request →
Route::get('/user/form')→UserController@showForm→ render view form. -
Người dùng nhập dữ liệu → click Submit → gửi POST request.
-
POST request →
Route::post('/user/submit')→UserController@handleSubmit. -
Controller validate, lấy dữ liệu, truyền sang view
user.result. -
View kết quả hiển thị thông tin người dùng.
Cấu trúc chuẩn MVC được tuân thủ hoàn hảo:
-
Model (nếu có): quản lý dữ liệu.
-
Controller: xử lý logic.
-
View: hiển thị nội dung.
Lời khuyên khi sử dụng GET và POST trong Laravel
-
Dùng GET cho các thao tác đọc: tìm kiếm, lọc, xem chi tiết.
-
Dùng POST cho các thao tác ghi: thêm, cập nhật, xóa dữ liệu.
-
Bảo mật form với CSRF token: Laravel tự động thêm nếu bạn dùng
@csrf. -
Validate dữ liệu trước khi xử lý để tránh lỗi và tấn công.
-
Không lạm dụng POST cho mọi thao tác — hãy tuân thủ chuẩn RESTful.
-
Sử dụng named route thay vì hardcode URL để dễ bảo trì.
-
Hiển thị lỗi thân thiện giúp người dùng dễ sửa thông tin sai.
Mở rộng: Kết hợp GET và POST trong cùng module
Bạn có thể kết hợp GET và POST trong cùng chức năng, ví dụ trang quản lý người dùng:
-
GET: hiển thị danh sách người dùng, có filter theo tên/email.
-
POST: xử lý khi thêm mới người dùng.
Ví dụ:
Điều này giúp giữ cho ứng dụng gọn gàng, rõ ràng về mục đích của từng request — đúng với tinh thần RESTful mà Laravel khuyến nghị.
Một số lỗi thường gặp khi làm việc với GET/POST trong Laravel
-
419 Page Expired – Do quên thêm
@csrftrong form. -
MethodNotAllowedHttpException – Gửi form bằng POST nhưng route chỉ khai báo GET.
-
ValidationException – Nhập dữ liệu sai định dạng, không qua validate.
-
Undefined variable trong view – Do không truyền biến qua
compact()hoặcwith().
Cách khắc phục:
-
Luôn kiểm tra lại phương thức trong route.
-
Sử dụng
dd($request->all())để debug dữ liệu nhận được. -
Đọc log tại
storage/logs/laravel.logđể biết chi tiết lỗi.
Kết luận
Qua bài viết này, bạn đã hiểu trọn vẹn về GET/POST trong Laravel — hai phương thức cốt lõi giúp client và server trao đổi dữ liệu. Từ việc hiển thị form, xử lý dữ liệu gửi đi, validate, đến hiển thị kết quả — tất cả đều tuân theo mô hình MVC chuẩn mực của Laravel.
Thông qua ví dụ nhập thông tin người dùng, bạn không chỉ học được cách viết route, controller, view mà còn biết cách tổ chức code hợp lý, bảo mật form, và tối ưu trải nghiệm người dùng.
Bước tiếp theo, hãy mở rộng ví dụ này bằng cách:
-
Lưu dữ liệu vào database bằng Eloquent.
-
Thêm tính năng sửa, xóa và danh sách người dùng.
-
Kết hợp AJAX để gửi form mà không cần reload trang.
Khi nắm vững cơ chế GET/POST trong Laravel, bạn đã có nền tảng vững chắc để xây dựng các ứng dụng web mạnh mẽ, bảo mật và thân thiện hơn. Laravel không chỉ giúp lập trình dễ dàng — mà còn giúp bạn tư duy như một developer chuyên nghiệp.
Hãy bắt đầu mở Visual Studio Code, tạo file route, controller, view và thử ngay ví dụ này — bởi chỉ khi bạn gõ từng dòng code, khái niệm GET/POST mới thật sự trở thành của bạn.