Chào mừng đến với Cafedev! Trong thế giới phát triển web ngày nay, việc xử lý biểu mẫu và xác thực là một phần không thể thiếu. Vue.js, một trong những framework phổ biến nhất, mang đến các công cụ mạnh mẽ để đơn giản hóa quá trình này. Ở bài viết này, chúng ta sẽ khám phá cách xây dựng biểu mẫu với Vue.js và triển khai các kỹ thuật xác thực sử dụng cả tính năng tích hợp sẵn và thư viện của bên thứ ba. Hãy cùng khám phá và tận hưởng sức mạnh của Vue.js trong việc xử lý biểu mẫu và xác thực!

Biểu mẫu là một phần cơ bản của các ứng dụng web, và Vue.js cung cấp các công cụ mạnh mẽ để đơn giản hóa việc tạo biểu mẫu, xử lý đầu vào của người dùng và xác thực. Trong phần này, chúng ta sẽ tìm hiểu cách xây dựng biểu mẫu với Vue.js và triển khai các kỹ thuật xác thực biểu mẫu bằng cách sử dụng cả tính năng tích hợp sẵn và các thư viện của bên thứ ba.

1. Xây Dựng Biểu Mẫu với Vue.js

1.1Tạo Một Biểu Mẫu Cơ Bản

Vue.js giúp việc tạo biểu mẫu trở nên đơn giản. Dưới đây là một ví dụ đơn giản về một biểu mẫu đăng nhập:

<template>
<form @submit.prevent="login">
<label for="username">Username:</label>
<input type="text" id="username" v-model="formData.username" required>
<label for="password">Password:</label>
<input type="password" id="password" v-model="formData.password" required>
<button type="submit">Login</button>
</form>
</template>

<script>
export default {
data() {
return {
formData: {
username: '',
password: ''
}
}
}
methods: {
login() {
// Handle form submission
console.log(this.formData);
}
}
}
</script>

Trong ví dụ này, chúng ta sử dụng chỉ thị v-model để ràng buộc các trường đầu vào biểu mẫu với dữ liệu của thành phần, cho phép ràng buộc dữ liệu hai chiều. Sự kiện @submit.prevent là sự kiện submit với bộ điều chỉnh prevent, điều này là hành vi mặc định của việc gửi biểu mẫu và kích hoạt phương thức login khi biểu mẫu được gửi.

2. Kỹ Thuật Xác Thực Biểu Mẫu

Xác Thực Tích Hợp Sẵn

Vue.js bao gồm các kỹ thuật xác thực biểu mẫu tích hợp sẵn để sử dụng với đầu vào biểu mẫu. Các kỹ thuật xác thực cơ bản như yêu cầu trường, phù hợp với mẫu và kiểm tra độ dài có thể được thực hiện bằng cách sử dụng chỉ thị như v-modelv-bind .
Dưới đây là một ví dụ về việc thêm xác thực cho một trường email bắt buộc:

<input type="email" id="email" v-model="formData.email" required>

Sử Dụng Thư Viện Bên Thứ Ba

Đối với các tình huống xác thực phức tạp hơn, bạn có thể tích hợp các thư viện xác thực bên thứ ba như Vuelidate hoặc VeeValidate vào các dự án Vue.js của bạn. Các thư viện này cung cấp một loạt các quy tắc xác thực và tính năng thông báo lỗi để tăng cường quá trình xác thực biểu mẫu của bạn.
Dưới đây là cách bạn có thể sử dụng Vuelidate để xác thực một trường biểu mẫu:

Vuelidate :
npm i vuelidate

import Vue from 'vue'
import Vuelidate from 'vuelidate'
Vue.use(Vuelidate)
<template>
<form @submit.prevent="login">
<label for="username">Username:</label>
<input type="text" id="username" v-model="formData.username" required>
<label for="password">Password:</label>
<input type="password" id="password" v-model="formData.password" required>
<button type="submit">Login</button>
</form>
</template>

<script>
import { required, email, minLength } from 'vuelidate/lib/validators';
export default {
data() {
return {
formData: {
email: ''
}
}
},
validations: {
formData: {
email: {
required,
email,
},
password: {
required,
minLength: minLength(6)
}
}
},
methods: {
login() {
// Handle form submission
console.log(this.formData);
}
}
}
</script>

Bằng cách sử dụng Vuelidate, bạn có thể dễ dàng xác định các quy tắc xác thực và hiển thị thông báo lỗi trong biểu mẫu của bạn.
VeeValidate:

npm i vee-validate@3

//Inside App.vue
import Vue from 'vue';
import { ValidationProvider, ValidationObserver, extend } from 'vee-validate';
import { required, email } from 'vee-validate/dist/rules';

//Extend the rules

extend('email',
{
...email,
message: 'Enter a valid Email'
});

extend('required', {
...required,
message: 'This field is required'
});

// Register it globally
Vue.component('ValidationObserver', ValidationObserver);
Vue.component('ValidationProvider', ValidationProvider);
<template>
<ValidationObserver ref="form">
<form @submit.prevent="login">
<ValidationProvider ref="provider" v-slot="{ errors }" rules="email|required">
<label for="username">Email:</label>
<input type="text" id="email" v-model="formData.email">
<span>{{errors[0]}}</span>
</ValidationProvider>

<ValidationProvider ref="provider" v-slot="{ errors }" rules="required">
<label for="password">Password:</label>
<input type="password" id="password" v-model="formData.password">
<span>{{errors[0]}}</span>
</ValidationProvider>
<button type="submit">Login</button>
</form>
</ValidationObserver>
</template>

<script>

export default {
data() {
return {
formData: {
email: '',
password: ''
},
};
},
methods: {
login() {
const valid = this.$refs.form.validate()
if(valid){
// Handle form submission
console.log(this.formData);
}
}
}
}
</script>

Bằng cách sử dụng VeeValidate, bạn có thể đơn giản hóa quá trình xác thực một cách sạch sẽ hơn.

3. Xác Thực Biểu Mẫu Thực Tế

Trong bài học sắp tới của chúng tôi, chúng ta sẽ đi qua các ví dụ thực tế và các quy tắc tốt nhất để tạo xác thực biểu mẫu với khả năng tích hợp sẵn của Vue.js cũng như các thư viện của bên thứ ba. Bạn sẽ học cách xác minh các loại đầu vào biểu mẫu khác nhau, hiển thị cảnh báo lỗi và cung cấp một trải nghiệm người dùng thống nhất.

Trên Cafedev, chúng ta đã khám phá những công cụ mạnh mẽ mà Vue.js mang lại trong việc xử lý biểu mẫu và xác thực. Từ tính năng tích hợp sẵn cho đến sự linh hoạt của các thư viện bên thứ ba, Vue.js thực sự là một lựa chọn tuyệt vời cho việc phát triển ứng dụng web. Hy vọng bạn đã học được nhiều điều mới mẻ và có thêm kiến thức cần thiết để tạo ra các biểu mẫu chất lượng cao và an toàn trên dự án của mình. Hãy tiếp tục theo dõi để khám phá thêm nhiều kiến thức hữu ích khác từ Cafedev!

Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của CafeDev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!