Vuejs validate form with VeeValidate

Lời mở đầu Trong bài viết này, mình sẽ hướng dẫn mọi người validate form với VeeValidate. Install VeeValidate Để cài đặt, các bạn chạy câu lệnh phía dưới # NPM npm install vee-validate --save # Yarn yarn add vee-validate Sau khi cài đặt xong, các bạn mở file main.js lên và thêm code phía

Lời mở đầu

Trong bài viết này, mình sẽ hướng dẫn mọi người validate form với VeeValidate.

Install VeeValidate

Để cài đặt, các bạn chạy câu lệnh phía dưới

# NPM
npm install vee-validate --save


# Yarn
yarn add vee-validate


Sau khi cài đặt xong, các bạn mở file main.js lên và thêm code phía dưới vào

import{ ValidationObserver, ValidationProvider, extend }from'vee-validate';import*as rules from'vee-validate/dist/rules';// install rules
Object.keys(rules).forEach(rule=>{extend(rule, rules[rule]);});

Vue.component('ValidationObserver', ValidationObserver);
Vue.component('ValidationProvider', ValidationProvider);

các bạn chạy thêm lệnh dưới để cài thêm boostrap vào dùng cho nhanh

npm i bootstrap-vue

sau khi cài xong các bạn thêm boostrap vào như file bên dưới

import Vue from"vue";import{ ValidationObserver, ValidationProvider, extend }from'vee-validate';import*as rules from'vee-validate/dist/rules';import App from"./App.vue";import BootstrapVue from'bootstrap-vue';import'bootstrap/dist/css/bootstrap.css';import'bootstrap-vue/dist/bootstrap-vue.css';// install rules
Object.keys(rules).forEach(rule=>{extend(rule, rules[rule]);});// Install components globally
Vue.use(BootstrapVue);
Vue.component('ValidationObserver', ValidationObserver);
Vue.component('ValidationProvider', ValidationProvider);

Vue.config.productionTip =false;newVue({render:h=>h(App)}).$mount("#app");

Create Form with Bootstrap in Vue

Bây giờ chúng ta tạo một form dùng boostrap

<template><b-form @submit.prevent="handleSubmit"><b-form-group label="Name"><b-form-input
              type="text"
              v-model="user.name"
              placeholder="Enter name"></b-form-input></b-form-group><b-form-group label="Email"><b-form-input
              type="email"
              v-model="user.email"
              placeholder="Enter email"></b-form-input></b-form-group><b-form-group label="Mobile"><b-form-input
              type="text"
              v-model="user.mobile"
              placeholder="Enter mobile no"></b-form-input></b-form-group><b-form-group label="City"><b-form-select v-model="user.city"><option value="">Choose</option><option value="CA">Los Angeles</option><option value="IL">Chicago</option><option value="LA">New Orleans</option><option value="NM">Santa Fe</option></b-form-select></b-form-group><b-form-group label="Password"><b-form-input v-model="user.password" type="password" placeholder="Enter password"></b-form-input></b-form-group><b-form-group label="Confirm Password"><b-form-input v-model="user.confirmation" type="password"></b-form-input></b-form-group><b-form-group><b-form-checkbox-group v-model="user.hobbies"><b-form-checkbox value="Reading">Reading</b-form-checkbox><b-form-checkbox value="Gyming">Gyming</b-form-checkbox><b-form-checkbox value="Movies">Movies</b-form-checkbox></b-form-checkbox-group></b-form-group><b-button block type="submit" variant="primary">Submit</b-button></b-form></template><script>exportdefault{data:()=>({
    user:{
        name:'',
        email:'',
        mobile:'',
        city:'',
        password:'',
        confirmation:'',
        hobbies:[]}}),
  methods:{handleSubmit(){
      console.log(this.user);}}};</script><style lang="scss">
form {
   max-width:500px;
   margin:0 auto; 
   text-align: left;}.col-form-label {
    font-weight:600;}</style>

Vue Form Validation with VeeValidate

Chúng ta đã đăng ký ValidationProvider trong file main.js. VeeValidate hỗ trợ rất nhiều rules để chúng ta sử dụng để validate, các bạn vào link tại đây để xem thêm.

Bây giờ file sẽ như thế này

<template><ValidationObserver ref="observer"><b-form slot-scope="{ validate }" @submit.prevent="validate().then(handleSubmit)"><ValidationProvider rules="required" name="Name"><b-form-group slot-scope="{ valid, errors }" label="Name"><b-form-input
              type="text"
              v-model="user.name":state="errors[0] ? false : (valid ? true : null)"
              placeholder="Enter name"></b-form-input><b-form-invalid-feedback>{{ errors[0]}}</b-form-invalid-feedback></b-form-group></ValidationProvider><ValidationProvider rules="required|email" name="Email"><b-form-group 
          slot-scope="{ valid, errors }"
          label="Email"><b-form-input
              type="email"
              v-model="user.email":state="errors[0] ? false : (valid ? true : null)"
              placeholder="Enter email"></b-form-input><b-form-invalid-feedback>{{ errors[0]}}</b-form-invalid-feedback></b-form-group></ValidationProvider><ValidationProvider rules="required" name="Mobile"><b-form-group 
          slot-scope="{ valid, errors }"
          label="Mobile"><b-form-input
              type="text"
              v-model="user.mobile":state="errors[0] ? false : (valid ? true : null)"
              placeholder="Enter mobile no"></b-form-input><b-form-invalid-feedback>{{ errors[0]}}</b-form-invalid-feedback></b-form-group></ValidationProvider><ValidationProvider name="City" rules="required"><b-form-group slot-scope="{ valid, errors }" label="City:"><b-form-select 
            :state="errors[0] ? false : (valid ? true : null)" 
            v-model="user.city"><option value="">Choose</option><option value="CA">Los Angeles</option><option value="IL">Chicago</option><option value="LA">New Orleans</option><option value="NM">Santa Fe</option></b-form-select><b-form-invalid-feedback>{{ errors[0]}}</b-form-invalid-feedback></b-form-group></ValidationProvider><ValidationProvider rules="required" name="Password" vid="password"><b-form-group 
          slot-scope="{ valid, errors }"
          label="Password"><b-form-input
              type="password"
              v-model="user.password":state="errors[0] ? false : (valid ? true : null)"
              placeholder="Enter password"></b-form-input><b-form-invalid-feedback>{{ errors[0]}}</b-form-invalid-feedback></b-form-group></ValidationProvider><ValidationProvider rules="required|confirmed:password" name="Confirm Password"><b-form-group 
          slot-scope="{ valid, errors }"
          label="Confirm Password"><b-form-input
              type="password"
              v-model="user.confirmation":state="errors[0] ? false : (valid ? true : null)"></b-form-input><b-form-invalid-feedback>{{ errors[0]}}</b-form-invalid-feedback></b-form-group></ValidationProvider><ValidationProvider name="Hobbies" rules="required|length:1"><b-form-group slot-scope="{ valid, errors }"><b-form-checkbox-group 
            :state="errors[0] ? false : (valid ? true : null)" 
            v-model="user.hobbies"><b-form-checkbox value="Reading">Reading</b-form-checkbox><b-form-checkbox value="Gyming">Gyming</b-form-checkbox><b-form-checkbox value="Movies">Movies</b-form-checkbox></b-form-checkbox-group><b-form-invalid-feedback>{{ errors[0]}}</b-form-invalid-feedback></b-form-group></ValidationProvider><b-button block type="submit" variant="primary">Submit</b-button></b-form></ValidationObserver></template><script>import{ ValidationObserver, ValidationProvider }from'vee-validate';exportdefault{
  components:{
    ValidationObserver,
    ValidationProvider
  },data:()=>({
    user:{
        name:'',
        email:'',
        mobile:'',
        city:'',
        password:'',
        confirmation:'',
        hobbies:[]}}),
  methods:{handleSubmit(){// pass validate  
      console.log(this.user);}}};</script><style lang="scss">
form {
   max-width:500px;
   margin:0 auto; 
   text-align: left;}.form-group > label {
    font-weight:600;}</style>

Bây giờ các bạn mở trình duyệt lên và xem nhé.

Bạn nào muốn custom message thì làm như dưới đây

import{ extend }from'vee-validate';import{ required }from'vee-validate/dist/rules';// Bạn xem link trên để xem tất cả rulesextend('required',{...required,
    message:'Message custom',});

Khi này tất cả những thằng nào mà required thì sẽ đk đổi thành message mà mình vừa custom.

Tổng kết

Ok! Vậy là mình vừa giới thiệu xong cho các bạn một package validate form. Nó làm cho việc validate trở nên siêu dễ dàng.

Nếu có chỗ nào sai xót mong các bạn comment để cho mình biết mình sửa và hẹn các bạn ở các bài viết tiếp theo 😍😍

Nguồn: viblo.asia

Bài viết liên quan

Sự Khác Nhau Giữa Domain và Hosting Là Gì?

Sự khác nhau giữa domain và hosting là gì? Bài này giải thích ngắn và dễ hiểu nh

Shared Hosting hay VPS Hosting: Lựa chọn nào dành cho bạn?

Bài viết giải thích rõ shared hosting và vps hosting là gì và hướng dẫn chọn lựa

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=