BackboneJS একটি লাইটওয়েট ফ্রেমওয়ার্ক হলেও এতে Model Validation এর জন্য শক্তিশালী ফিচার রয়েছে। মডেল ভ্যালিডেশন ব্যবহার করে আপনি মডেলের ডেটাকে সঠিক এবং বিশ্বাসযোগ্য রাখতে পারেন, যেমন: ব্যবহারকারীর ইনপুট যাচাই করা, নির্দিষ্ট নিয়ম মেনে ডেটা জমা দেওয়া ইত্যাদি। BackboneJS এ Model Validation সরাসরি validate() মেথডের মাধ্যমে করা হয়, যা আপনি আপনার মডেলে কাস্টম ভ্যালিডেশন লজিক যোগ করতে পারেন।
এখানে আমরা শিখবো কীভাবে BackboneJS এ Model Validation এবং Custom Validation Methods ব্যবহার করতে হয়।
1. Model Validation in BackboneJS
BackboneJS এ মডেল ভ্যালিডেশন করার জন্য, আপনাকে মডেলের মধ্যে validate() মেথড ডিফাইন করতে হয়। এই মেথডটি যখন মডেলের set() অথবা save() মেথড কল করা হয়, তখন অ্যাক্টিভেট হয়। যদি ভ্যালিডেশন ফেইল হয়, তবে এটি একটি error রিটার্ন করবে, এবং পরিবর্তনগুলি করা হবে না।
উদাহরণ: Basic Model Validation
var User = Backbone.Model.extend({
defaults: {
name: '',
email: ''
},
validate: function(attrs) {
// name ভ্যালিডেশন
if (!attrs.name) {
return 'Name is required!';
}
// email ভ্যালিডেশন
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
if (!emailPattern.test(attrs.email)) {
return 'Please enter a valid email address!';
}
}
});
// Model তৈরি করা
var user = new User();
// ভ্যালিডেশন ফেইল হলে কনসোলে error মেসেজ দেখানো হবে
user.set({
name: '', // নাম ফাঁকা রাখা হয়েছে
email: 'invalid-email'
}, { validate: true });
if (user.validationError) {
console.log(user.validationError); // Output: Name is required!
}
এখানে, validate() মেথডে দুটি ভ্যালিডেশন যুক্ত করা হয়েছে: একটি name এর জন্য এবং একটি email এর জন্য। যখন মডেলে ডেটা সেট করা হয়, তখন যদি কোনো ভ্যালিডেশন ফেইল করে, তখন validationError প্রপার্টি তে একটি এরর মেসেজ সেট হবে।
2. Custom Validation Methods
BackboneJS এ আপনি চাইলে আপনার নিজস্ব কাস্টম ভ্যালিডেশন মেথডও তৈরি করতে পারেন। এর মাধ্যমে আপনি মডেলের যে কোনো প্রপার্টি বা সেটিং এর উপর আরো কাস্টম লজিক প্রয়োগ করতে পারবেন।
উদাহরণ: Custom Validation Method
var Product = Backbone.Model.extend({
defaults: {
name: '',
price: 0
},
validate: function(attrs) {
// কাস্টম ভ্যালিডেশন: নাম অবশ্যই ৩টি অক্ষরের বেশি হতে হবে
if (attrs.name.length < 3) {
return 'Product name must be at least 3 characters long!';
}
// কাস্টম ভ্যালিডেশন: দাম অবশ্যই ১ এর বেশি হতে হবে
if (attrs.price <= 0) {
return 'Price must be greater than zero!';
}
}
});
// Product Model তৈরি করা
var product = new Product();
// ভ্যালিডেশন ফেইল হলে error মেসেজ দেখানো হবে
product.set({
name: 'A', // নাম খুব ছোট
price: -5 // দাম অযৌক্তিক
}, { validate: true });
if (product.validationError) {
console.log(product.validationError); // Output: Product name must be at least 3 characters long!
}
এখানে, Product মডেলে কাস্টম ভ্যালিডেশন যুক্ত করা হয়েছে। name প্রপার্টি কমপক্ষে ৩টি অক্ষরের হতে হবে এবং price প্রপার্টি ০ এর বেশি হতে হবে।
3. Asynchronous Validation
BackboneJS এ আপনি asynchronous validationও ব্যবহার করতে পারেন, যেখানে মডেলের ভ্যালিডেশন শুধুমাত্র সার্ভার সাইড চেকিং বা অন্য কোনো অ্যাসিনক্রোনাস অপারেশনের পরে হবে। এটি করতে হলে, আপনি মডেলের validate() মেথডের মধ্যে একটি callback ফাংশন ব্যবহার করতে পারেন।
উদাহরণ: Asynchronous Validation
var User = Backbone.Model.extend({
defaults: {
username: '',
email: ''
},
validate: function(attrs, options) {
// Async ভ্যালিডেশন: যদি username ইতিমধ্যে ব্যবহৃত হয়
if (attrs.username === 'takenUsername') {
// Asynchronous validation with callback
return 'Username is already taken!';
}
// email ভ্যালিডেশন
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
if (!emailPattern.test(attrs.email)) {
return 'Please enter a valid email address!';
}
}
});
// User Model তৈরি করা
var user = new User();
// ভ্যালিডেশন ফেইল হলে error মেসেজ দেখানো হবে
user.set({
username: 'takenUsername', // এই ইউজারনেমটি আগে থেকেই নেওয়া
email: 'user@example.com'
}, { validate: true });
if (user.validationError) {
console.log(user.validationError); // Output: Username is already taken!
}
এখানে, যখন ব্যবহারকারী takenUsername ইউজারনেম দিয়ে সাইন আপ করার চেষ্টা করবে, তখন ভ্যালিডেশন ফেইল হবে এবং একটি এরর মেসেজ ফিরে আসবে।
4. Invalid Event Handling
BackboneJS এ invalid ইভেন্টটি ব্যবহার করে আপনি ভ্যালিডেশন ফেইল হলে কোনো অ্যাকশন নিতে পারেন। উদাহরণস্বরূপ, আপনি মডেল সেট করার পরে invalid ইভেন্ট শুনতে পারেন এবং ডেটা অকার্যকর হলে কিছু UI আপডেট করতে পারেন।
উদাহরণ: Invalid Event Handling
var Product = Backbone.Model.extend({
defaults: {
name: '',
price: 0
},
validate: function(attrs) {
if (attrs.price <= 0) {
return 'Price must be greater than zero!';
}
}
});
// Product মডেল তৈরি করা
var product = new Product();
// invalid ইভেন্ট লিসেনার যোগ করা
product.on('invalid', function(model, error) {
console.log('Validation failed: ' + error);
});
// price <= 0 হলে ভ্যালিডেশন ফেইল হবে
product.set({
name: 'Laptop',
price: 0
}, { validate: true });
এখানে, যখন মডেলে price ০ অথবা তার কম সেট করা হবে, তখন invalid ইভেন্ট ট্রিগার হবে এবং কনসোলে একটি এরর মেসেজ দেখাবে।
5. Server-side Validation
BackboneJS এর মডেল ভ্যালিডেশন সাধারণত ক্লায়েন্ট-সাইডের কাজ, কিন্তু আপনি চাইলে server-side validation এর সাথে একত্রিত করতে পারেন। এর জন্য, আপনি save() মেথড ব্যবহার করে সার্ভারে ডেটা পাঠাতে পারেন এবং সার্ভার থেকে ফিরে আসা validation error এর উপর ভিত্তি করে ব্যবহারকারীকে মেসেজ দিতে পারেন।
সারাংশ
BackboneJS এ Model Validation খুবই গুরুত্বপূর্ণ এবং শক্তিশালী ফিচার।
validate()মেথড ব্যবহার করে আপনি ক্লায়েন্ট-সাইড ভ্যালিডেশন করতে পারেন।- Custom Validation Methods ব্যবহার করে আপনি কাস্টম নিয়ম সেট করতে পারেন।
- Asynchronous Validation এর মাধ্যমে আপনি সার্ভার সাইড চেকিং যোগ করতে পারেন।
invalidevent ব্যবহার করে ভ্যালিডেশন ফেইল হলে ইভেন্ট ট্রিগার করতে পারেন।
এই সব ফিচার BackboneJS কে আরও শক্তিশালী এবং ডাইনামিক অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে।
Read more