Laravel - Forms: A Beginner's Guide

Xin chào các bạn đang học lập trình! Là một giáo viên khoa học máy tính với nhiều năm kinh nghiệm, tôi rất vui được hướng dẫn các bạn khám phá thế giới thú vị của các biểu mẫu Laravel. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - chúng ta sẽ bắt đầu từ những điều cơ bản và dần dần nâng cao. Cuối cùng của bài hướng dẫn này, bạn sẽ có thể tạo các biểu mẫu như một chuyên gia!

Laravel - Forms

What are Laravel Forms?

Trước khi chúng ta nhảy vào mã code, hãy hiểu Laravel forms là gì. Hãy tưởng tượng bạn đang điền một mẫu đơn xin việc trực tuyến - đó là một biểu mẫu! Trong phát triển web, biểu mẫu là cách chúng ta thu thập thông tin từ người dùng. Laravel, khung công tác PHP thân thiện của chúng ta, giúp tạo và xử lý các biểu mẫu này một cách dễ dàng.

Why Use Laravel for Forms?

Bạn có thể đang tự hỏi, "Tại sao lại sử dụng Laravel?" Hãy để tôi kể cho bạn một câu chuyện ngắn. Ngày xưa khi tôi còn là một nhà phát triển trẻ (vâng, thời đó còn có khủng long), việc tạo biểu mẫu là một quá trình nhàm chán. Nhưng Laravel đã đến như một siêu anh hùng, làm cho cuộc sống của chúng ta trở nên dễ dàng hơn với các công cụ mạnh mẽ và tính năng bảo mật.

Getting Started

Đầu tiên, hãy chắc chắn rằng bạn đã cài đặt Laravel trên hệ thống của mình. Nếu bạn chưa cài đặt, đừng lo lắng! Chỉ cần làm theo hướng dẫn cài đặt chính thức của Laravel, và bạn sẽ sẵn sàng trong tích tắc.

Example 1: Creating a Simple Contact Form

Hãy bắt đầu với một biểu mẫu liên hệ đơn giản. Chúng ta sẽ tạo một biểu mẫu yêu cầu tên, email và tin nhắn.

Step 1: Create the Route

Mở file web.php trong thư mục routes và thêm dòng này:

Route::get('/contact', 'ContactController@showForm');

Điều này cho biết Laravel sẽ hiển thị biểu mẫu liên hệ của chúng ta khi ai đó truy cập URL '/contact'.

Step 2: Create the Controller

Chạy lệnh này trong terminal của bạn:

php artisan make:controller ContactController

Bây giờ, mở file ContactController.php vừa tạo và thêm phương thức này:

public function showForm()
{
return view('contact');
}

Phương thức này sẽ trả về view của biểu mẫu liên hệ.

Step 3: Create the View

Tạo một file mới có tên contact.blade.php trong thư mục resources/views và thêm mã này:

<form action="/submit-contact" method="POST">
@csrf
<div>
<label for="name">Tên:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="message">Tin nhắn:</label>
<textarea id="message" name="message" required></textarea>
</div>
<button type="submit">Gửi</button>
</form>

Giải thích:

  • @csrf là một chỉ thị Laravel thêm một token ẩn để ngăn chặn các cuộc tấn công CSRF. Hãy nghĩ của nó như một握手 bí mật giữa biểu mẫu của bạn và Laravel.
  • Chúng ta đã tạo các trường nhập liệu cho tên, email và một textarea cho tin nhắn.
  • Thuộc tính required đảm bảo rằng người dùng điền đầy đủ tất cả các trường trước khi gửi.

Step 4: Handle Form Submission

Thêm một route mới trong web.php:

Route::post('/submit-contact', 'ContactController@submitForm');

Sau đó, thêm phương thức này vào ContactController của bạn:

public function submitForm(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email',
'message' => 'required',
]);

// Xử lý dữ liệu biểu mẫu (ví dụ: lưu vào cơ sở dữ liệu, gửi email)

return redirect('/contact')->with('success', 'Cảm ơn bạn đã gửi tin nhắn!');
}

Phương thức này xác thực dữ liệu biểu mẫu và chuyển hướng trở lại trang liên hệ với một thông báo thành công.

Example 2: Creating a Registration Form

Bây giờ chúng ta đã làm quen, hãy tạo một biểu mẫu đăng ký phức tạp hơn.

Step 1: Create the Route

Thêm này vào web.php của bạn:

Route::get('/register', 'RegisterController@showForm');
Route::post('/register', 'RegisterController@register');

Step 2: Create the Controller

Chạy lệnh này:

php artisan make:controller RegisterController

Thêm các phương thức này vào RegisterController:

public function showForm()
{
return view('register');
}

public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
'date_of_birth' => 'required|date',
'gender' => 'required|in:male,female,other',
]);

// Logic tạo người dùng ở đây

return redirect('/register')->with('success', 'Đăng ký thành công!');
}

Step 3: Create the View

Tạo register.blade.php trong thư mục views của bạn:

<form action="/register" method="POST">
@csrf
<div>
<label for="name">Tên:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="password">Mật khẩu:</label>
<input type="password" id="password" name="password" required>
</div>
<div>
<label for="password_confirmation">Xác nhận mật khẩu:</label>
<input type="password" id="password_confirmation" name="password_confirmation" required>
</div>
<div>
<label for="date_of_birth">Ngày sinh:</label>
<input type="date" id="date_of_birth" name="date_of_birth" required>
</div>
<div>
<label>Giới tính:</label>
<input type="radio" id="male" name="gender" value="male" required>
<label for="male">Nam</label>
<input type="radio" id="female" name="gender" value="female">
<label for="female">Nữ</label>
<input type="radio" id="other" name="gender" value="other">
<label for="other">Khác</label>
</div>
<button type="submit">Đăng ký</button>
</form>

Biểu mẫu này bao gồm các loại đầu vào khác nhau: văn bản, email, mật khẩu, ngày và nút radio.

Form Validation Methods

Dưới đây là bảng các phương thức xác thực phổ biến của Laravel:

Phương thức Mô tả
required Trường không được để trống
email Phải là địa chỉ email hợp lệ
max:value Độ dài tối đa
min:value Độ dài tối thiểu
unique:table Phải duy nhất trong bảng cơ sở dữ liệu chỉ định
confirmed Phải có trường khớp (ví dụ: password_confirmation)
date Phải là ngày hợp lệ
in:foo,bar,... Phải là một trong các giá trị liệt kê

Conclusion

Chúc mừng! Bạn vừa tạo hai biểu mẫu Laravel và học cách xử lý chúng. Nhớ rằng, thực hành làm cho hoàn hảo, vì vậy hãy tiếp tục thử nghiệm với các loại biểu mẫu và quy tắc xác thực khác nhau.

Khi chúng ta kết thúc, hãy để tôi chia sẻ một câu chuyện ngắn. Tôi từng có một học sinh rất sợ hãi biểu mẫu - anh ấy nghĩ rằng chúng là những thứ phức tạp và bí ẩn. Nhưng sau một vài bài học, anh ấy đã tạo biểu mẫu cho vui! Đó là vẻ đẹp của Laravel - nó biến điều phức tạp thành điều thú vị.

Tiếp tục lập mã, 保持好奇心, và đừng sợ hỏi câu hỏi. Chúc các bạn vui vẻ khi xây dựng biểu mẫu!

Credits: Image by storyset