ব্যাকবোন মডেলের ডেটা ভ্যালিডেশন

আপনি চাইলেই আপনার ব্যাকবোন মডেলে চমৎকার করে ডেটা ভ্যালিডেশন যোগ করতে পারেন। এর মাধ্যমে আপনি নিশ্চিত করতে পারবেন যে আপনার মডেলে ভ্যালিড ডেটা এসেছে কিনা। নিচের কোডটুকু দেখুন, এখানে আমরা আমাদের person মডেলে বয়সের উপরে ভ্যালিডেশন যোগ করবো যেন কেউ বয়স হিসেবে নেগেটিভ ভ্যালু কিংবা ০ সেট না করতে পারে

var person = Backbone.Model.extend({
    defaults:{
        firstName: "The",
        lastName: "Anonymous",
        age: 0
    },
    getName: function(){
        return this.get("firstName") + " " + this.get("lastName");
    },
    validate:function(attributes, options){
        if(attributes.age<=0){
            return "Invalid age";
        }
    }
});

উপরের কোডে দেখবেন যে আমরা validate() নামে একটা ফাংশন যোগ করেছি। এই ফাংশনটি মডেলের isValid() মেথড অ্যাক্সেস করলে রান করে। এছাড়া মডেল যদি সার্ভারের সাথে সিংক (sync) করে তাহলে মডেলের save() ফাংশন কল করলেও এই validate ফাংশনটি রান করে, এবং এরর থাকলে সেটা সার্ভারের সাথে সিংক করে না। এই সিংকের বিষয়টা আমরা পরবর্তীতে দেখব, এখন ভ্যালিডেশন নিয়ে আলোচনা চলুক আপাতত

validate ফাংশন যোগ করার পরে আমরা খুব সহজেই আমাদের মডেলের ডেটা ভ্যালিড কিনা সেটা চেক করতে পারি isValid() ফাংশনের সাহায্যে। কোন ভ্যালিডেশন এরর থাকলে সেই এরর টা কি সেটাও আমরা জানতে পারি। নিচের কোডটুকু দেখুন

var p1 = new person({
    firstName:"Aron",
    lastName:"Springfield"
});

p1.set({age:0});

if(!p1.isValid()){
    alert (p1.validationError);
    //this will output "Invalid age"
}

আপনি চাইলে মডেলে ডেটা সেট করার সময়ও এই validate ফাংশন টি রান করাতে পারেন। এজন্য মডেলের set() মেথডে একটা এক্সট্রা প্যারামিটার পাঠানো লাগে {validate:true} । নিচের কোডটুকু দেখুন

এখানে সেট করার সময় ভ্যালিডেশন চেক হয়নি

console.log ( p1.set({age:0}) );
//no validation ran yet. age = 0

এখানে সেট করার সময় ভ্যালিডেশন চেক হয়েছে

console.log ( p1.set({age:0}, {validate:true}) );
//output is false, means that validation fails

আশাকরি এই ভ্যালিডেশন এর বিষয়টি আপনাদের কাছে পরিষ্কার হয়েছে।

পূর্ববর্তী অংশ: ব্যাকবোন মডেলে মেথড যোগ করা | পরবর্তী অংশ: ব্যাকবোন মডেলের কিছু চমৎকার এবং উপকারী মেথড এর সাথে পরিচিতি