Form তৈরি এবং সাবমিট করা

ফর্ম হ্যান্ডলিং এবং ভ্যালিডেশন - কেকপিএইচপি (CakePHP) - Web Development

313

CakePHP ফ্রেমওয়ার্কে ফর্ম তৈরি এবং সাবমিট করা একটি সহজ এবং সরল প্রক্রিয়া। CakePHP এর ফর্ম হেলপার আপনাকে HTML ফর্ম তৈরি করতে সহায়তা করে এবং ইউজারের ইনপুট ডেটা প্রক্রিয়া করে। এই গাইডে, আমরা ফর্ম তৈরি এবং সাবমিট করার পদ্ধতি দেখব।


CakePHP তে ফর্ম তৈরি করা

CakePHP-তে ফর্ম তৈরি করতে FormHelper ব্যবহার করা হয়। FormHelper ব্যবহার করলে আপনি সহজে ফর্ম তৈরি করতে পারবেন এবং ফর্মের ডেটা প্রক্রিয়া করতে পারবেন। ফর্ম তৈরি করার জন্য আপনাকে সাধারণত কন্ট্রোলারের add() বা edit() অ্যাকশনের ভিউ ফাইলে ফর্ম কোড লিখতে হয়।

১. ফর্ম তৈরি করার জন্য কন্ট্রোলার

ধরা যাক, আপনি একটি আর্টিকেল তৈরি করার জন্য ফর্ম তৈরি করতে চান। প্রথমে, ArticlesController.php কন্ট্রোলারে একটি add() অ্যাকশন তৈরি করতে হবে:

// src/Controller/ArticlesController.php

public function add()
{
    $article = $this->Articles->newEmptyEntity(); // নতুন একটি article অবজেক্ট তৈরি
    if ($this->request->is('post')) {
        $article = $this->Articles->patchEntity($article, $this->request->getData()); // ফর্ম ডেটা প্যাচ করা
        if ($this->Articles->save($article)) {
            $this->Flash->success(__('Your article has been saved.'));
            return $this->redirect(['action' => 'index']); // সফল হলে index পেজে রিডাইরেক্ট করা
        }
        $this->Flash->error(__('Unable to add your article.'));
    }
    $this->set('article', $article); // ভিউতে article ডেটা পাঠানো
}

২. ভিউ ফাইলে ফর্ম তৈরি করা

এখন, add() অ্যাকশনের জন্য একটি ভিউ ফাইল তৈরি করতে হবে। templates/Articles/add.php ফাইলের মধ্যে ফর্ম তৈরি করা হবে:

// templates/Articles/add.php

<h1>Add New Article</h1>

<?php
// Form তৈরি করা
echo $this->Form->create($article); // FormHelper ব্যবহার করে ফর্ম তৈরি
echo $this->Form->control('title'); // title ফিল্ড তৈরি
echo $this->Form->control('body'); // body ফিল্ড তৈরি
echo $this->Form->button(__('Save Article')); // সাবমিট বাটন
echo $this->Form->end(); // ফর্মের সমাপ্তি
?>

এখানে:

  • $this->Form->create($article) ফর্ম তৈরি করছে এবং $article অবজেক্টের সাথে এটি জড়িত।
  • $this->Form->control() ফাংশনটি HTML ইনপুট ফিল্ড তৈরি করে।
  • $this->Form->button() সাবমিট বাটন তৈরি করে।
  • $this->Form->end() ফর্মটি সমাপ্ত করে।

CakePHP তে ফর্ম সাবমিট করা

CakePHP তে ফর্ম সাবমিট করতে POST পদ্ধতি ব্যবহার করা হয়। যখন ইউজার ফর্মটি সাবমিট করবে, তখন কন্ট্রোলার এ post রিকোয়েস্ট আসবে, এবং আপনি সেই ডেটা প্রক্রিয়া করতে পারবেন।

১. ডেটা প্রসেসিং এবং সংরক্ষণ

কন্ট্রোলারের add() অ্যাকশনটি ফর্ম থেকে ডেটা গ্রহণ করে, এবং এটি প্যাচ করে মডেল অবজেক্টে সেভ করবে। নিচে একটি উদাহরণ দেয়া হলো:

public function add()
{
    $article = $this->Articles->newEmptyEntity(); // একটি খালি article অবজেক্ট তৈরি
    if ($this->request->is('post')) { // যদি পোস্ট রিকোয়েস্ট হয়
        $article = $this->Articles->patchEntity($article, $this->request->getData()); // ফর্ম ডেটা প্যাচ করা
        if ($this->Articles->save($article)) { // ডেটা সেভ করা
            $this->Flash->success(__('Your article has been saved.'));
            return $this->redirect(['action' => 'index']); // সফল হলে index পেজে রিডাইরেক্ট করা
        }
        $this->Flash->error(__('Unable to add your article.')); // ত্রুটি বার্তা
    }
    $this->set('article', $article); // ভিউতে article ডেটা পাঠানো
}

এখানে:

  • patchEntity() ফাংশনটি ফর্ম ডেটা কন্ট্রোলার অবজেক্টে প্যাচ করে (যেমন article অবজেক্ট)।
  • save() ফাংশনটি মডেল অবজেক্টটি ডাটাবেসে সেভ করে।
  • Flash->success() বা Flash->error() ফাংশনটি ইউজারকে সফলতা বা ত্রুটির বার্তা দেখায়।

ফর্মের Validation (যাচাই)

CakePHP তে ফর্ম ডেটা যাচাই করার জন্য Validation ব্যবহার করা হয়। মডেল ফাইলের মধ্যে ডেটা যাচাইয়ের নিয়ম গুলি উল্লেখ করা হয়।

১. Validation Rules (যাচাইয়ের নিয়ম)

উদাহরণস্বরূপ, Article মডেলে title এবং body ফিল্ডের জন্য কিছু validation নিয়ম যোগ করা হয়েছে:

// src/Model/Table/ArticlesTable.php

public function validationDefault(Validator $validator): Validator
{
    $validator
        ->scalar('title')
        ->maxLength('title', 255)
        ->requirePresence('title', 'create')
        ->notEmptyString('title', 'Title is required.');

    $validator
        ->scalar('body')
        ->requirePresence('body', 'create')
        ->notEmptyString('body', 'Body is required.');

    return $validator;
}

এখানে:

  • title এবং body ফিল্ডগুলির জন্য যাচাই নিয়ম দেওয়া হয়েছে।
  • requirePresence() ফাংশনটি নিশ্চিত করে যে, ফিল্ডটি ফর্ম সাবমিটের সময় উপস্থিত থাকবে।
  • notEmptyString() ফাংশনটি নিশ্চিত করে যে, ফিল্ডটি খালি থাকবে না।

২. ভিউতে Validation Error দেখানো

ভ্যালিডেশন ফেইল হলে, CakePHP স্বয়ংক্রিয়ভাবে ত্রুটির বার্তা দেখায়। তবে আপনি কাস্টমাইজড বার্তা প্রদর্শন করতে পারেন:

// templates/Articles/add.php

<h1>Add New Article</h1>

<?php
echo $this->Form->create($article);
echo $this->Form->control('title');
echo $this->Form->control('body');
echo $this->Form->button(__('Save Article'));
echo $this->Form->end();

if ($article->getErrors()) {
    foreach ($article->getErrors() as $field => $errors) {
        foreach ($errors as $error) {
            echo '<div class="error">' . h($error) . '</div>';
        }
    }
}
?>

এখানে:

  • getErrors() ফাংশনটি মডেল অবজেক্টের ভুল/ত্রুটি পরীক্ষা করে এবং আপনি সেগুলি ইউজারকে দেখাতে পারেন।

CakePHP তে ফর্ম তৈরি এবং সাবমিট করা অত্যন্ত সহজ এবং সোজা। FormHelper ব্যবহার করে আপনি ফর্ম তৈরি করতে পারেন এবং Validation এর মাধ্যমে ডেটা যাচাই করতে পারেন। এছাড়া, ফর্ম সাবমিটের পর ডেটা প্রসেসিং এবং মডেল অবজেক্টে সংরক্ষণও খুব সহজ। এটি একটি শক্তিশালী এবং কার্যকরী ফর্ম হ্যান্ডলিং পদ্ধতি যা আপনার অ্যাপ্লিকেশনকে আরও শক্তিশালী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...