Validation với Laravel

Validation với Laravel
Đối với một 1 trang web hiện nay hay bất kỳ ứng dụng nào thì việc validate dữ liệu là 1 phần không thể thiếu.

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.

Hiển thị thông báo lỗi ở view

<!-- /resources/views/post/create.blade.php -->
 
<h1>Create Post</h1>
 
@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
 
<!-- Create Post Form -->

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.

Hồ Hữu Hiền

Mình là developer nên đôi khi viết bài không hay lắm mong các bạn thông cảm. Nếu muốn biết thêm thông tin về mình thì vui lòng vào website này để biết. https://huuhienqt.dev/

Bình luận (3)

Phu
Phu 1 tuần trước
Ad ơi, có danh sách tất cả validations mà validation request hỗ trợ không?
Hồ Hữu Hiền 1 tuần trước
Chào Phú, Đây là danh sách cái validation rules bạn có thể tham khảo. https://laravel.com/docs/9.x/validation#available-validation-rules
Phu
Phu 6 ngày trước
Cảm ơn ad

Để lại bình luận