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!
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 |
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