ExtJS এর Model হচ্ছে ডেটার কাঠামো বা স্ট্রাকচার, যা ডেটা সংরক্ষণ, রিটার্ন, আপডেট এবং ভ্যালিডেশন পরিচালনা করে। মডেলগুলি সাধারণত একটি store বা proxy ব্যবহার করে ডেটা পরিচালনা করে এবং fields, validations, এবং associations এর মাধ্যমে ডেটার সাথে সম্পর্কিত অপারেশন পরিচালনা করে।
Model তৈরি করা
একটি ExtJS Model তৈরি করতে, Ext.define ফাংশন ব্যবহার করতে হয় এবং এটি Ext.data.Model ক্লাস থেকে সম্প্রসারিত (extend) করা হয়।
Model তৈরি করার ধাপ:
fields: মডেলের ডেটা ফিল্ডগুলি সংজ্ঞায়িত করা হয় (যেমন: নাম, ইমেইল, ফোন নম্বর ইত্যাদি)।validations: ডেটার বৈধতা পরীক্ষা করার জন্য (যেমন: নামের দৈর্ঘ্য, ইমেইল ফরম্যাট)।associations: মডেলগুলোর মধ্যে সম্পর্ক নির্ধারণ (যেমন: একাধিক রেকর্ডের সাথে সম্পর্কিত মডেল)।proxy: ডেটা সেভ বা লোড করার জন্য।
Model উদাহরণ:
Ext.define('MyApp.model.User', {
extend: 'Ext.data.Model',
// মডেলের ডেটা ফিল্ড
fields: [
{ name: 'id', type: 'int' },
{ name: 'name', type: 'string' },
{ name: 'email', type: 'string' },
{ name: 'dob', type: 'date', dateFormat: 'Y-m-d' }
],
// মডেলের ভ্যালিডেশন
validations: [
{ type: 'length', field: 'name', min: 3 },
{ type: 'email', field: 'email' }
],
// মডেলের ডেটা অ্যাসোসিয়েশন (যদি প্রয়োজন হয়)
associations: [
{
type: 'hasMany',
model: 'MyApp.model.Order', // সম্পর্কিত মডেল
name: 'orders', // সম্পর্কের নাম
foreignKey: 'user_id' // সম্পর্কের কী
}
],
// ডেটা লোড বা সেভ করার জন্য প্রক্সি কনফিগারেশন
proxy: {
type: 'ajax',
url: '/users', // API URL
reader: {
type: 'json',
rootProperty: 'data' // API থেকে আসা JSON ডেটা রুট
}
}
});
Model এর প্রধান অংশ:
fields:name: ফিল্ডের নাম।type: ফিল্ডের ডেটা টাইপ, যেমনstring,int,date।dateFormat: তারিখ ফরম্যাট (যদি প্রয়োজন হয়)।
validations:type: ভ্যালিডেশনের ধরন (যেমন:length,email,presence)।field: যেই ফিল্ডে ভ্যালিডেশন হবে।min,max: ভ্যালিডেশন সীমা (যেমন দৈর্ঘ্য)।
associations:type: সম্পর্কের ধরন, যেমনhasMany,belongsToইত্যাদি।model: সম্পর্কিত মডেলের নাম।foreignKey: সম্পর্কের কী।
proxy:type: ডেটা লোড বা সেভ করার জন্য ব্যবহৃত প্রযুক্তি (যেমনajax,localstorage)।url: API URL বা সেভ/লোড করার লোকেশন।reader: API থেকে প্রাপ্ত ডেটার রিডারের ধরন (যেমন:json), এবংrootPropertyকনফিগারেশন।
Model ব্যবহার করা
মডেল তৈরির পর, আপনি সেই মডেল ব্যবহার করে ডেটা লোড বা সেভ করতে পারেন।
Model দিয়ে ডেটা সেভ করা:
var user = Ext.create('MyApp.model.User', {
name: 'John Doe',
email: 'john.doe@example.com',
dob: '1990-05-15'
});
user.save({
success: function(record, operation) {
console.log('User saved successfully');
},
failure: function(record, operation) {
console.log('Error saving user');
}
});
Model দিয়ে ডেটা লোড করা:
Ext.create('MyApp.model.User', {
id: 1
}).load({
success: function(record) {
console.log(record.get('name')); // সফলভাবে ডেটা লোড হলে নাম দেখাবে
},
failure: function(record, operation) {
console.log('Error loading user');
}
});
Model এর Store ব্যবহার করা:
ডেটা ম্যানেজমেন্টে মডেলটি store এর সাথে ব্যবহার করা হয়। স্টোরটি মডেলের ডেটার লিস্ট ধারণ করে এবং ডেটা লোড বা সেভ করতে সাহায্য করে।
var userStore = Ext.create('Ext.data.Store', {
model: 'MyApp.model.User',
autoLoad: true // অ্যাপ্লিকেশন লোড হওয়ার পর ডেটা অটোমেটিক লোড হবে
});
স্টোরের মধ্যে ডেটা আপডেট করা:
userStore.load({
callback: function(records, operation, success) {
if (success) {
var user = records[0]; // প্রথম রেকর্ড
user.set('name', 'Jane Doe'); // নাম আপডেট
user.save(); // সেভ করা
}
}
});
সারাংশ
- Model: ExtJS অ্যাপ্লিকেশনে ডেটার কাঠামো এবং লজিক পরিচালনা করে।
fields: মডেলের ফিল্ড বা ডেটা পয়েন্টগুলির সংজ্ঞা।validations: মডেলের ডেটার ভ্যালিডেশন।associations: মডেলের মধ্যে সম্পর্ক (যেমনhasMany,belongsTo)।proxy: ডেটা লোড এবং সেভ করার জন্য প্রযুক্তি কনফিগারেশন।save()এবংload(): মডেল থেকে ডেটা সেভ বা লোড করার পদ্ধতি।
মডেল কনফিগারেশন এবং ডেটা ম্যানিপুলেশনটি ExtJS অ্যাপ্লিকেশনের ডেটা হ্যান্ডলিং ও ভ্যালিডেশন সহজ করে তোলে এবং মডেল ডেটার মধ্যে সম্পর্ক তৈরি করতে সাহায্য করে।
Read more