Validation là gì và tại sao chúng ta nên validate dữ liêu?
Validation thực chất là xác thực dữ liệu từ người dùng. Ví dụ bạn muốn lấy thông tin từ form đăng ký thành viên cho 1 website nào đó thì cần người dùng gửi lên địa chỉ email, họ và tên và mật khẩu. Nhưng đôi khi người ta gửi lên địa chỉ email không đúng hoặc không gửi lên thì chúng ta cần 1 bước nữa là kiểm tra đúng kiểu dữ liệu nhận vào.
Bắt đầu với validation.
Để bắt đầu tìm hiểu về validation trong laravel chúng ta xem ví dụ đầy đủ về việc xác thực một form gửi lên và hiển thị thông báo lỗi cho người dùng nếu dữ liệu không đúng.
Tạo routes
use App\Http\Controllers\PostController;
Route::get('/post/create', [PostController::class, 'create']);
Route::post('/post', [PostController::class, 'store']);
Route GET sẽ hiển thị form để người dùng tạo một bài đăng mới, trong khi route POST sẽ lưu trữ bài đăng mới trong cơ sở dữ liệu.
Tạo Controller
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* Show the form to create a new blog post.
*
* @return \Illuminate\View\View
*/
public function create()
{
return view('post.create');
}
/**
* Store a new blog post.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
// Validate and store the blog post...
}
}
Viết logic cho validation request
Bây giờ chúng tôi đã sẵn sàng điền vào phương thức store chúng tôi với logic để xác thực bài đăng bài viết mới. Để làm điều này, chúng tôi sẽ sử dụng phương thức xác thực được cung cấp bởi đối tượng Illuminate\Http\Request
. Nếu các quy tắc xác thực được thông qua, mã của bạn sẽ tiếp tục thực thi bình thường; tuy nhiên, nếu xác thực không thành công, một ngoại lệ Illuminate\Validation\ValidationException
sẽ được ném ra và phản hồi lỗi thích hợp sẽ tự động được gửi lại cho người dùng.
/**
* Store a new blog post.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
// The blog post is valid...
}
Ở trên chúng ta yêu cầu user gửi lên là tiêu đề của bài viết là bắt buộc, không trùng với tiêu đề trong bảng posts và tối đa là 255 ký tự.
Trường body bắt buộc phải nhập.
Kết bài
Mong ra qua bài viết này bạn hiểu hơn về cách kiểm tra dữ liệu đầu vào từ client do Laravel cung cấp.
Cập nhật thêm được vài kiến thức mới
Bài viết hữu ích.
Hữu ích
Cảm ơn Admin. Bài viết khá hay !
OK bạn, mình sẽ sắp xếp viết một bài về Extend Validation. Cảm ơn bạn đã quan tâm nhé.