Ajax Form Submission এবং Validation

Ajax এবং JavaScript ইন্টিগ্রেশন - কেকপিএইচপি (CakePHP) - Web Development

261

Ajax (Asynchronous JavaScript and XML) একটি অত্যন্ত জনপ্রিয় প্রযুক্তি যা ওয়েব পেজ রিলোড না করেই ডেটা প্রক্রিয়া করতে সক্ষম। CakePHP তে Ajax ফর্ম সাবমিশন এবং ভ্যালিডেশন সহজভাবে বাস্তবায়ন করা যায়, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। এই টিউটোরিয়ালে আমরা CakePHP তে Ajax ফর্ম সাবমিশন এবং ভ্যালিডেশন কীভাবে পরিচালনা করা যায়, তা আলোচনা করব।


১. Ajax ফর্ম সাবমিশন

CakePHP তে Ajax ফর্ম সাবমিশন করতে, আমরা সাধারণত jQuery ব্যবহার করি, যা CakePHP এর সাথে সহজেই ইন্টিগ্রেট করা যায়। Ajax ফর্ম সাবমিশন ব্যবহার করে, ফর্ম ডেটা সার্ভারে পাঠানো হয় এবং তা প্রক্রিয়া হয়ে ওয়েব পেজ রিলোড না করে শুধুমাত্র ডাইনামিকভাবে রেসপন্স দেখানো হয়।

১.১. Ajax ফর্ম তৈরি করা

প্রথমে, CakePHP তে একটি ফর্ম তৈরি করুন। এখানে একটি উদাহরণ দেওয়া হলো:

<?= $this->Form->create($article, [
    'url' => ['action' => 'add'],
    'type' => 'post',
    'id' => 'articleForm', // ফর্মের জন্য একটি ID দিন
    'class' => 'ajax-form'
]) ?>
<?= $this->Form->control('title') ?>
<?= $this->Form->control('body') ?>
<?= $this->Form->button('Submit') ?>
<?= $this->Form->end() ?>

এখানে:

  • 'url' => ['action' => 'add']: ফর্ম সাবমিট করার জন্য নির্দিষ্ট অ্যাকশন।
  • 'type' => 'post': ফর্মের মেথড।
  • 'class' => 'ajax-form': ফর্মের জন্য ক্লাস যোগ করা হয়েছে, যাতে এটি jQuery এর মাধ্যমে সহজে টার্গেট করা যায়।

১.২. jQuery দিয়ে Ajax ফর্ম সাবমিশন

CakePHP তে Ajax ফর্ম সাবমিশন করতে jQuery ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো:

$(document).ready(function() {
    $('#articleForm').on('submit', function(event) {
        event.preventDefault();  // ডিফল্ট ফর্ম সাবমিশন বন্ধ করুন

        var formData = new FormData(this);  // ফর্মের ডেটা সংগ্রহ

        $.ajax({
            url: $(this).attr('action'),  // ফর্মের অ্যাকশন URL
            type: 'POST',  // HTTP মেথড
            data: formData,  // ফর্ম ডেটা
            processData: false,
            contentType: false,
            success: function(response) {
                // রেসপন্স সফল হলে
                $('#result').html(response);  // রেসপন্স ভিউতে দেখান
            },
            error: function() {
                alert('ফর্ম সাবমিটে সমস্যা হয়েছে');
            }
        });
    });
});

এখানে:

  • event.preventDefault(): ফর্মের ডিফল্ট সাবমিশন প্রতিরোধ করা হচ্ছে।
  • FormData(this): এটি ফর্মের সকল ডেটা সংগ্রহ করে।
  • $.ajax(): Ajax কলের মাধ্যমে ফর্ম ডেটা সার্ভারে পাঠানো হচ্ছে।

১.৩. Ajax রেসপন্স হ্যান্ডলিং

CakePHP কন্ট্রোলারে ajax রেসপন্স হ্যান্ডলিং করার জন্য একটি ভিউ তৈরি করতে হবে। উদাহরণস্বরূপ, add অ্যাকশনে ফর্ম ডেটা প্রক্রিয়া করার পর একটি রেসপন্স পাঠাতে হবে।

public function add() {
    $article = $this->Articles->newEmptyEntity();
    if ($this->request->is('ajax')) {  // যদি Ajax রিকুয়েস্ট হয়
        $article = $this->Articles->patchEntity($article, $this->request->getData());
        if ($this->Articles->save($article)) {
            $this->set('response', 'আর্টিকেল সফলভাবে সেভ করা হয়েছে');
        } else {
            $this->set('response', 'আর্টিকেল সেভ করতে সমস্যা হয়েছে');
        }
        $this->viewBuilder()->setClassName('Json');  // JSON রেসপন্স
        $this->set('_serialize', 'response');  // রেসপন্স এক্সপোজ করা
    }
}

এখানে:

  • $this->request->is('ajax'): Ajax রিকুয়েস্ট চেক করা হচ্ছে।
  • $this->set('response', 'message'): রেসপন্স ডেটা সেট করা হচ্ছে।
  • $this->viewBuilder()->setClassName('Json'): JSON রেসপন্স সেট করা হচ্ছে।

২. Ajax ফর্ম ভ্যালিডেশন

Ajax ফর্ম সাবমিশনের সময় ফর্মের ডেটা যদি ভ্যালিড না হয়, তাহলে ব্যবহারকারীকে ত্রুটি বার্তা জানানো প্রয়োজন। CakePHP তে ফর্ম ভ্যালিডেশন এবং Ajax এর মাধ্যমে ত্রুটি বার্তা প্রদর্শন করা সম্ভব।

২.১. মডেল ভ্যালিডেশন

CakePHP তে মডেল ভ্যালিডেশন দিয়ে ফর্ম ডেটা যাচাই করা হয়। এখানে একটি উদাহরণ দেওয়া হলো:

use Cake\Validation\Validator;

public function validationDefault(Validator $validator): Validator
{
    $validator
        ->notEmptyString('title', 'শিরোনাম অবশ্যই পূর্ণ করতে হবে')
        ->notEmptyString('body', 'বডি অবশ্যই পূর্ণ করতে হবে')
        ->minLength('body', 20, 'বডির দৈর্ঘ্য অন্তত ২০ অক্ষর হতে হবে');

    return $validator;
}

২.২. Ajax রিকুয়েস্টের জন্য ভ্যালিডেশন হ্যান্ডলিং

কন্ট্রোলারে ফর্ম ভ্যালিডেশন চেক করে এবং Ajax রিকুয়েস্টের জন্য ভ্যালিডেশন ত্রুটি পাঠানো হয়।

public function add() {
    $article = $this->Articles->newEmptyEntity();
    if ($this->request->is('ajax')) {
        $article = $this->Articles->patchEntity($article, $this->request->getData());
        if ($article->getErrors()) {
            // যদি কোনো ত্রুটি থাকে
            $this->set('response', $article->getErrors());
        } else {
            if ($this->Articles->save($article)) {
                $this->set('response', 'আর্টিকেল সফলভাবে সেভ করা হয়েছে');
            } else {
                $this->set('response', 'সেভ করতে সমস্যা হয়েছে');
            }
        }
        $this->viewBuilder()->setClassName('Json');
        $this->set('_serialize', 'response');
    }
}

এখানে:

  • $article->getErrors(): মডেলের ত্রুটিগুলি চেক করা হচ্ছে।
  • $this->set('response', $article->getErrors()): ত্রুটি বার্তা JSON আকারে রিটার্ন করা হচ্ছে।

২.৩. Ajax ত্রুটি বার্তা প্রদর্শন

jQuery এর মাধ্যমে, আপনি সার্ভার থেকে পাওয়া ত্রুটি বার্তা ফর্মে প্রদর্শন করতে পারেন।

$(document).ready(function() {
    $('#articleForm').on('submit', function(event) {
        event.preventDefault();

        var formData = new FormData(this);

        $.ajax({
            url: $(this).attr('action'),
            type: 'POST',
            data: formData,
            processData: false,
            contentType: false,
            success: function(response) {
                if (response.errors) {
                    // ত্রুটি বার্তা ফর্মে দেখানো
                    $('#errorMessages').html(response.errors.title || response.errors.body);
                } else {
                    $('#result').html(response);  // সফল রেসপন্স
                }
            },
            error: function() {
                alert('ফর্ম সাবমিটে সমস্যা হয়েছে');
            }
        });
    });
});

এখানে, ত্রুটি বার্তা #errorMessages ID দিয়ে ফর্মে দেখানো হবে।


CakePHP তে Ajax ফর্ম সাবমিশন এবং ভ্যালিডেশন একটি শক্তিশালী পদ্ধতি যা ওয়েব অ্যাপ্লিকেশনগুলোর ইউজার এক্সপেরিয়েন্স উন্নত করে। Ajax এর মাধ্যমে ফর্ম সাবমিট এবং তার সাথে ভ্যালিডেশন সম্পন্ন হলে, ইউজারকে পেজ রিলোড ছাড়াই দ্রুত ফলাফল দেখানো সম্ভব। CakePHP তে Ajax ফর্ম সাবমিশন এবং ভ্যালিডেশন সহজেই ইমপ্লিমেন্ট করা যায়, এবং এটি নিরাপত্তা, ব্যবহারকারীর অভিজ্ঞতা, এবং সিস্টেমের পারফরম্যান্সের উন্নতিতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...