Tin Tức

Tổng hợp các bài viết, kinh nghiệm, chia sẻ kiến thức hữu ích về việc làm onsite, nhân sự onsite.

Hướng dẫn cài và sử dụng Vee-Validate cho nuxt js

folder Kiến thức công nghệ
today 21/10/2024 23:23
VeeValidate - một thư viện validation cho Vue. js. Nó cung cấp rất nhiều quy tắc để validation dữ liệu và dễ dàng custom lại theo mong muốn. Chúng ta có thể validate HTML5 inputs cũng như custom Vue components.

Bước 1: Tạo Dự Án Nuxt.js Mới

Nếu bạn chưa có dự án Nuxt.js, bạn có thể tạo một dự án mới :

Chú ý: Có 2 cách để tạo dự án Nuxtjs đó là:

  • npm
  • yarn

Đối với yarn chạy lệnh sau :

yarn create nuxt-app <project-name>

Còn đối với npm thì  tạo dự án bằng cách sử dụng npx:

npx create-nuxt-app servbay-nuxt-app

Bước 2: Cài Đặt Thư Viện vee-validate

Mở terminal và chạy lệnh sau để cài đặt vee-validate:

Đối với yarn chạy lệnh sau:

yarn add vee-validate

Còn với npm thì chạy lệnh :

npm install vee-validate --save

Bước 3: Tạo plugin cho vee-validate

Tạo một file mới trong thư mục plugins, ví dụ vee-validate.js:

import Vue from 'vue';
import { ValidationProvider, ValidationObserver, configure, extend } from 'vee-validate';
import { required, min, max, between, email, numeric, confirmed } from 'vee-validate/dist/rules';

Vue.component('validation-observer', ValidationObserver);
Vue.component('validation-provider', ValidationProvider);

// If any option you want to change common
configure({ bails: false });

// Continue to add the necessary rule
extend('minSalary', {
  validate: (value, { min, max } = {}) => {
    return Number(min) <= value && Number(max) >= value;
  },
  message: 'Dữ liệu nhập vào lớn hơn {length} VND.'
});
extend('maxSalary', {
  ...max,
  message: 'Dữ liệu nhập vào nhỏ hơn {length} VND.'
});
extend('min', {
  ...min,
  message: 'Dữ liệu nhập vào lớn hơn {length} ký tự.'
});
extend('max', {
  ...max,
  message: 'Dữ liệu nhập vào nhỏ hơn {length} ký tự.'
});
extend('required', {
  ...required,
  message: 'Đây là thông tin bắt buộc.'
});
extend('between', {
  ...between,
  params: ['min', 'max'],
  message: 'Dữ liệu nhập vào lớn hơn {min} ký tự và nhỏ hơn {max} ký tự.'
});
extend('email', {
  ...email,
  message: 'Địa chỉ email không đúng định dạng.'
});
extend('numeric', {
  ...numeric,
  message: 'Dữ liệu nhập vào phải là số.'
});
extend('confirmed', {
  ...confirmed,
  message: 'Mật khẩu không chính xác.'
});
extend('phone', {
  message: 'Số điện thoại không đúng định dạng',
  validate: (value) => {
    return /(02|03|05|07|08|09|01[2|6|8|9])+([0-9]{8})\b/.test(value);
  }
});
extend('password', {
  message: 'Mật khẩu bao gồm 8-16 ký tự, có ít nhất 1 số, 1 ký tự viết hoa, 1 ký tự viết thường, 1 ký tự đặc biệt',
  validate: (value) => {
    return /(?=^.{8,16}$)((?=.*\d)(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/.test(value);
  }
});
extend('website', {
  message: 'Đường dẫn website không đúng định dạng',
  validate: (value) => {
    return /^((ftp|http|https):\/\/)?([a-zA-Z0-9]+\.)[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*\/?$/.test(value);
  }
});
extend('facebook', {
  message: 'Đường đẫn facebook không đúng định dạng',
  validate: (value) => {
    return /^(?:(?:http|https):\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w+-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w+-+.]*)?$/.test(value);
  }
});
extend('limit_date', {
  message: 'Hạn nộp hồ sơ tối thiểu là 10 ngày',
  validate: (value) => {
    const today = new Date();
    const parts = value.split('/');
    const day = parts[0];
    const month = parts[1];
    const year = parts[2];
    const inputDate = new Date(`${year}-${month}-${day}`);
    const afterTenDay = new Date();
    afterTenDay.setDate(today.getDate() + 8);

    if (afterTenDay >= inputDate) {
      return false;
    } else {
      return true;
    }
  }
});

Bước 4: Đăng ký plugin trong nuxt.config.js

Mở file nuxt.config.js và thêm plugin:

// nuxt.config.js
export default {
  plugins: [
    '~/plugins/vee-validate.js'
  ]
};

Bước 5: Sử dụng vee-validate trong component

Bây giờ bạn có thể sử dụng vee-validate trong các component của bạn. Ví dụ, tạo một form trong pages/index.vue:

<template>
  <div>
    <h1>Form Validation with Vee-Validate</h1>
    <Form @submit="handleSubmit">
      <Field name="email" type="email" as="input" placeholder="Email" />
      <ErrorMessage name="email" />
      
      <Field name="password" type="password" as="input" placeholder="Password" />
      <ErrorMessage name="password" />

      <button type="submit">Submit</button>
    </Form>
  </div>
</template>

<script>
import { useForm } from 'vee-validate';

export default {
  setup() {
    const { handleSubmit } = useForm();

    const onSubmit = (values) => {
      console.log('Submitted values:', values);
    };

    return { handleSubmit: handleSubmit(onSubmit) };
  }
};
</script>

Bước 6: Chạy project 

Chạy project của bạn:

npm run dev

Kết quả

Khi bạn điền vào form và gửi, vee-validate sẽ kiểm tra tính hợp lệ của các trường và hiển thị thông báo lỗi nếu cần.

Nếu bạn có bất kỳ câu hỏi nào khác, hãy cho tôi biết!