Hướng Dẫn Validation trong Laravel
Validation rất quan trọng để đảm bảo tính toàn vẹn của dữ liệu. Laravel cung cấp một hệ thống validation mạnh mẽ vừa đơn giản vừa linh hoạt.
Validation Cơ Bản
Sử dụng phương thức validate trong controller để validate dữ liệu đầu vào:
$request->validate([
'email' => 'required|email',
'password' => 'required|min:8',
]);
Tùy Chỉnh Thông Báo Lỗi
Bạn có thể tùy chỉnh thông báo lỗi để thân thiện hơn với người dùng:
$request->validate([
'email' => 'required|email',
], [
'email.required' => 'Email là bắt buộc.',
'email.email' => 'Vui lòng nhập địa chỉ email hợp lệ.',
]);
Form Request Validation
Với logic validation phức tạp, sử dụng các lớp Form Request. Tạo một lớp bằng Artisan:
php artisan make:request StoreUserRequest
Định nghĩa các rule trong lớp request được tạo:
public function rules() {
return [
'name' => 'required|string',
'email' => 'required|email',
];
}
Bạn cũng có thể thêm logic authorization tùy chỉnh trong phương thức authorize.
Validation Có Điều Kiện
Laravel cho phép bạn áp dụng các rule theo điều kiện:
$request->validate([
'password' => ['required', 'min:8'],
'confirm_password' => Rule::requiredIf($request->has('password')),
]);
Đối Tượng Rule Tùy Chỉnh
Để có logic validation có thể tái sử dụng, tạo các đối tượng rule tùy chỉnh:
php artisan make:rule Uppercase
Định nghĩa logic validation trong phương thức passes:
public function passes($attribute, $value) {
return strtoupper($value) === $value;
}
Sử dụng rule trong validation:
$request->validate([
'username' => ['required', new Uppercase],
]);
Validate Mảng Lồng Nhau
Laravel hỗ trợ validate các cấu trúc dữ liệu phức tạp như mảng lồng nhau:
$request->validate([
'items.*.name' => 'required|string',
'items.*.quantity' => 'required|integer|min:1',
]);
Validate Upload File
Validate upload file với các rule như file, image, mimes, và max:
$request->validate([
'profile_picture' => 'required|image|mimes:jpeg,png|max:2048',
]);
Validation Hook
Sử dụng hook như withValidator để thêm logic sau validation:
$request->validate([
'email' => 'required|email',
]);
$validator->after(function ($validator) {
if ($this->somethingIsWrong()) {
$validator->errors()->add('field', 'Có gì đó không đúng!');
}
});
Các Thực Hành Tốt Nhất
- Giữ Rule DRY: Sử dụng Form Request hoặc rule tùy chỉnh để tránh trùng lặp.
- Validate Sớm: Thực hiện validation ngay khi dữ liệu vào ứng dụng.
- Sử Dụng Thông Báo Có Ý Nghĩa: Cung cấp thông báo lỗi rõ ràng và có thể hành động được.
- Tận Dụng Rule Có Sẵn: Laravel cung cấp nhiều rule validation—sử dụng chúng trước khi tạo rule tùy chỉnh.
Nắm vững hệ thống validation của Laravel sẽ giúp bạn xây dựng các ứng dụng an toàn và đáng tin cậy. Bắt đầu áp dụng các kỹ thuật này trong dự án của bạn ngay hôm nay!