ফর্মের মাধ্যমে Data Submission এবং ফর্ম ভ্যালিডেশন

Web Development - এক্সটিজেএস (ExtJS) - ExtJS Form এবং Form Validation |
1

ExtJS তে ফর্ম তৈরি করা এবং সেগুলির মাধ্যমে ডেটা সাবমিট (submit) করা একটি সাধারণ কাজ, যা বিভিন্ন ফর্ম ফিল্ড এবং ভ্যালিডেশন চেক করার মাধ্যমে ব্যবহারকারীর ইনপুট সংগ্রহ করতে সহায়ক। ExtJS এর Ext.form.Panel এবং Ext.form.field কম্পোনেন্ট ব্যবহার করে খুব সহজে ফর্ম তৈরি এবং ডেটা সাবমিট করা যায়। এছাড়াও, ফর্ম ভ্যালিডেশন নিশ্চিত করার জন্য ExtJS শক্তিশালী মেকানিজম প্রদান করে।


১. ফর্ম তৈরি করা (Ext.form.Panel)

প্রথমে, একটি সাধারণ ফর্ম তৈরি করা যাক যেখানে ব্যবহারকারী নাম এবং ইমেইল ইনপুট করবে। ফর্মটি সাবমিট করার সময় আমরা ডেটা সার্ভারে পাঠাবো।

উদাহরণ: একটি সাধারণ ফর্ম

Ext.create('Ext.form.Panel', {
    title: 'User Information Form',
    width: 300,
    bodyPadding: 10,
    renderTo: Ext.getBody(),
    items: [
        {
            xtype: 'textfield',
            name: 'name',
            fieldLabel: 'Name',
            allowBlank: false,  // নাম ফিল্ড ফাঁকা রাখা যাবে না
            minLength: 3,       // কমপক্ষে ৩ অক্ষর
            maxLength: 50       // সর্বোচ্চ ৫০ অক্ষর
        },
        {
            xtype: 'textfield',
            name: 'email',
            fieldLabel: 'Email',
            vtype: 'email',  // ইমেইল ভ্যালিডেশন
            allowBlank: false
        }
    ],
    buttons: [
        {
            text: 'Submit',
            handler: function() {
                var form = this.up('form').getForm();
                if (form.isValid()) {
                    form.submit({
                        url: '/submit',  // ফর্মের ডেটা কোথায় পাঠানো হবে
                        method: 'POST',
                        success: function(form, action) {
                            Ext.Msg.alert('Success', 'Form submitted successfully.');
                        },
                        failure: function(form, action) {
                            Ext.Msg.alert('Failed', 'Form submission failed.');
                        }
                    });
                } else {
                    Ext.Msg.alert('Invalid', 'Please correct the errors in the form.');
                }
            }
        }
    ]
});

এখানে:

  • xtype: 'textfield': এটি একটি টেক্সট ইনপুট ফিল্ড তৈরি করবে।
  • allowBlank: false: এটি নিশ্চিত করবে যে, ইনপুট ফিল্ডটি ফাঁকা থাকা যাবে না।
  • minLength এবং maxLength: ইনপুটের দৈর্ঘ্য সীমাবদ্ধ করতে ব্যবহৃত হয়।
  • vtype: 'email': ইমেইল ফিল্ডের জন্য একটি বিল্ট-ইন ভ্যালিডেশন।
  • form.submit: ফর্মের ডেটা সাবমিট করতে ব্যবহৃত হয়, এখানে একটি POST রিকোয়েস্ট সার্ভারে পাঠানো হবে।

২. ফর্ম ভ্যালিডেশন (Form Validation)

ফর্ম ভ্যালিডেশন ব্যবহারকারীর ইনপুট যাচাই করার একটি প্রক্রিয়া। ExtJS তে বিভিন্ন ধরনের বিল্ট-ইন ফর্ম ভ্যালিডেশন রয়েছে যা ফিল্ডের ইনপুট চেক করতে ব্যবহৃত হয়।

ফর্ম ভ্যালিডেশন উদাহরণ:

Ext.create('Ext.form.Panel', {
    title: 'Registration Form',
    width: 400,
    bodyPadding: 10,
    renderTo: Ext.getBody(),
    items: [
        {
            xtype: 'textfield',
            name: 'username',
            fieldLabel: 'Username',
            allowBlank: false,  // ইনপুট ফিল্ড ফাঁকা রাখা যাবে না
            minLength: 3,       // ইনপুটের দৈর্ঘ্য ৩ অক্ষরের কম হতে পারবে না
            maxLength: 20,      // ইনপুটের দৈর্ঘ্য ২০ অক্ষরের বেশি হতে পারবে না
            regex: /^[a-zA-Z0-9]+$/,  // কেবল alphanumeric চিহ্ন গ্রহণ করবে
            invalidText: 'Username should contain only alphanumeric characters.'
        },
        {
            xtype: 'textfield',
            name: 'password',
            fieldLabel: 'Password',
            inputType: 'password', // পাসওয়ার্ড ফিল্ড তৈরি করবে
            allowBlank: false,
            minLength: 6,          // পাসওয়ার্ডের দৈর্ঘ্য কমপক্ষে ৬
            vtype: 'alphanum',     // পাসওয়ার্ডে অক্ষর এবং সংখ্যা থাকবে
            invalidText: 'Password must be at least 6 characters.'
        },
        {
            xtype: 'textfield',
            name: 'email',
            fieldLabel: 'Email',
            vtype: 'email',  // ইমেইল ভ্যালিডেশন
            allowBlank: false
        }
    ],
    buttons: [
        {
            text: 'Submit',
            handler: function() {
                var form = this.up('form').getForm();
                if (form.isValid()) {
                    Ext.Msg.alert('Valid', 'The form is valid. Ready to submit.');
                    // এখানে ফর্ম ডেটা সাবমিট করা যাবে
                } else {
                    Ext.Msg.alert('Invalid', 'Please fix the errors in the form.');
                }
            }
        }
    ]
});

এখানে:

  • allowBlank: false: ফিল্ডের জন্য ভ্যালিডেশন নিশ্চিত করা হচ্ছে যে এটি ফাঁকা থাকলে ফর্ম সাবমিট হবে না।
  • minLength, maxLength: দৈর্ঘ্য সীমাবদ্ধ করতে ব্যবহৃত হয়।
  • regex: ব্যবহারকারী একটি নির্দিষ্ট প্যাটার্ন অনুসরণ করতে বাধ্য হয় (যেমন কেবল অক্ষর এবং সংখ্যা)।
  • vtype: 'email': ইমেইল ভ্যালিডেশন নিশ্চিত করা।

৩. Custom Validation Function

যদি আপনি কোনো কাস্টম ভ্যালিডেশন চাইতে পারেন, তবে আপনি কাস্টম ভ্যালিডেশন ফাংশন তৈরি করতে পারবেন।

উদাহরণ: কাস্টম ভ্যালিডেশন

Ext.create('Ext.form.Panel', {
    title: 'Custom Validation Form',
    width: 400,
    bodyPadding: 10,
    renderTo: Ext.getBody(),
    items: [
        {
            xtype: 'textfield',
            name: 'age',
            fieldLabel: 'Age',
            allowBlank: false,
            validator: function(value) {
                if (value < 18) {
                    return 'Age must be 18 or older';
                }
                return true;  // valid
            }
        }
    ],
    buttons: [
        {
            text: 'Submit',
            handler: function() {
                var form = this.up('form').getForm();
                if (form.isValid()) {
                    Ext.Msg.alert('Valid', 'Form is valid. Ready to submit.');
                    // এখানে ফর্ম ডেটা সাবমিট করা যাবে
                } else {
                    Ext.Msg.alert('Invalid', 'Please correct the errors in the form.');
                }
            }
        }
    ]
});

এখানে, validator ফাংশন ব্যবহার করে একটি কাস্টম ভ্যালিডেশন যুক্ত করা হয়েছে, যা বয়সের ইনপুটের জন্য ১৮ এর কম হলে ত্রুটি বার্তা দেখাবে।


৪. ফর্ম সাবমিট (Form Submission)

ফর্ম ভ্যালিডেশন সফল হলে আপনি ফর্মের ডেটা AJAX অথবা সার্ভারের মাধ্যমে সাবমিট করতে পারেন। ExtJS এর form.submit() মেথড এটি সম্পন্ন করতে ব্যবহৃত হয়।

ফর্ম সাবমিট উদাহরণ:

form.submit({
    url: '/submit',
    method: 'POST',
    success: function(form, action) {
        Ext.Msg.alert('Success', 'Form submitted successfully');
    },
    failure: function(form, action) {
        Ext.Msg.alert('Failed', 'Form submission failed');
    }
});

এখানে:

  • url: ফর্মের ডেটা কোথায় পাঠানো হবে।
  • method: HTTP মেথড (POST, GET ইত্যাদি) ব্যবহার করা হবে।
  • success এবং failure: ফর্ম সাবমিট সফল হলে অথবা ব্যর্থ হলে কলব্যাক ফাংশন।

সারাংশ

  • Form Panel: ExtJS তে ফর্ম তৈরি করার জন্য Ext.form.Panel ব্যবহার করা হয়, যেখানে বিভিন্ন ফর্ম ফিল্ড যেমন textfield, datefield, checkbox ইত্যাদি থাকে।
  • Validation: ফর্মের ইনপুট ভ্যালিডেশন করার জন্য allowBlank, minLength, regex, vtype, এবং কাস্টম ভ্যালিডেশন ফাংশন ব্যবহার করা যায়।
  • Form Submission: ফর্ম সাবমিট করার জন্য form.submit() মেথড ব্যবহার করা হয়, যা AJAX বা HTTP মেথডের মাধ্যমে ডেটা সার্ভারে পাঠায়।

এই বৈশিষ্ট্যগুলোর মাধ্যমে আপনি একটি পূর্ণাঙ্গ এবং ব্যবহারকারী-বান্ধব ফর্ম তৈরি করতে পারবেন।

Content added By
Promotion