CakePHP তে ফর্ম ডেটা হ্যান্ডলিং এবং এর সাথে ত্রুটি বার্তা (Error Messages) সঠিকভাবে পরিচালনা করা খুবই গুরুত্বপূর্ণ। এটি ব্যবহারকারীকে ফর্ম সাবমিট করার সময় ডেটা প্রক্রিয়া এবং কোন ত্রুটি ঘটলে তা সঠিকভাবে প্রদর্শন করতে সহায়তা করে। এই টিউটোরিয়ালে আমরা CakePHP তে ফর্ম ডেটা হ্যান্ডলিং এবং ত্রুটি বার্তা প্রদর্শনের প্রক্রিয়া সম্পর্কে বিস্তারিত আলোচনা করবো।
১. ফর্ম ডেটা হ্যান্ডলিং
CakePHP তে ফর্ম ডেটা হ্যান্ডলিং করতে মূলত request->getData() এবং মডেল (Model) ব্যবহার করা হয়। ফর্মে ইউজার যে ডেটা ইনপুট দেয়, তা কন্ট্রোলারে request->getData() এর মাধ্যমে গ্রহণ করা হয় এবং মডেলটির মাধ্যমে ডাটাবেসে সেভ করা হয়।
১.১. ফর্ম ডেটা গ্রহণ
কোনো ফর্ম সাবমিট করার সময়, CakePHP ফর্ম ডেটা কন্ট্রোলারে পাস করে। নিচের উদাহরণটি দেখুন:
public function add() {
$article = $this->Articles->newEmptyEntity(); // একটি নতুন এন্টিটি তৈরি
if ($this->request->is('post')) { // ফর্ম সাবমিট হলে
// ফর্ম ডেটা মডেলে পাস করা
$article = $this->Articles->patchEntity($article, $this->request->getData());
if ($this->Articles->save($article)) {
$this->Flash->success('আর্টিকেল সফলভাবে সেভ করা হয়েছে');
return $this->redirect(['action' => 'index']);
}
$this->Flash->error('আর্টিকেল সেভ করতে সমস্যা হয়েছে');
}
$this->set(compact('article')); // ভিউতে পাঠানোর জন্য
}
এখানে:
$this->request->getData(): এটি ফর্ম থেকে আসা ডেটা গ্রহণ করে।patchEntity(): এটি ডেটা মডেলের সাথে মেলানো (প্যাচিং) করে।
১.২. ফর্মে ডেটা পুনরায় প্রদর্শন
যদি ফর্মে ত্রুটি থাকে এবং ব্যবহারকারী আবার ফর্ম পূর্ণ করে পাঠায়, তখন আগের ইনপুট ফিল্ডগুলো আবার প্রদর্শন করতে হবে। CakePHP এই কাজটি অটোমেটিকভাবে করে দেয়, কিন্তু আপনি যদি ম্যানুয়ালি সেট করতে চান, তবে কোডের নিচে ফর্মের মানে পাঠানোর জন্য set() ব্যবহার করতে পারেন।
$this->set(compact('article')); // $article মডেল ডেটা ভিউতে পাঠাবে
এটি ফর্ম ইনপুট ফিল্ডগুলোর পূর্বের মান ফিরে এনে দিবে।
২. ত্রুটি বার্তা (Error Messages)
CakePHP তে ফর্মের ডেটা ভ্যালিডেশন এবং ত্রুটি বার্তা প্রদর্শনের জন্য শক্তিশালী ব্যবস্থা রয়েছে। আপনি মডেল ভ্যালিডেশন (Model Validation) ব্যবহার করে ডেটার বৈধতা যাচাই করতে পারেন এবং যদি কোনো ত্রুটি থাকে, তা ফ্ল্যাশ মেসেজ বা ভিউতে প্রদর্শন করতে পারেন।
২.১. মডেল ভ্যালিডেশন
CakePHP তে মডেল ভ্যালিডেশন সেট করার জন্য Validation ক্লাস ব্যবহার করা হয়। আপনি এই ক্লাসে বিভিন্ন ভ্যালিডেশন রুল সেট করতে পারেন।
use Cake\Validation\Validator;
public function validationDefault(Validator $validator): Validator
{
$validator
->notEmptyString('title', 'শিরোনাম ফিল্ডটি অবশ্যই পূর্ণ করতে হবে')
->notEmptyString('body', 'বডি ফিল্ডটি অবশ্যই পূর্ণ করতে হবে')
->minLength('body', 20, 'বডি ফিল্ডের দৈর্ঘ্য অন্তত ২০ অক্ষর হতে হবে');
return $validator;
}
এখানে:
notEmptyString(): ফিল্ড খালি থাকতে পারে না।minLength(): একটি নির্দিষ্ট দৈর্ঘ্যের চেয়ে ছোট হতে পারে না।
২.২. ত্রুটি বার্তা ভিউতে দেখানো
যখন একটি ফর্ম সঠিকভাবে পূর্ণ করা হয় না, তখন সেই ত্রুটিগুলো ভিউতে প্রদর্শন করতে হবে। আপনি $form->control() ব্যবহার করে ইনপুট ফিল্ডের পাশে ত্রুটি বার্তা প্রদর্শন করতে পারেন।
<?= $this->Form->create($article) ?>
<?= $this->Form->control('title') ?>
<?= $this->Form->control('body') ?>
<?= $this->Form->button('Submit') ?>
<?= $this->Form->end() ?>
এখানে, যদি title অথবা body ফিল্ডে কোনো ত্রুটি থাকে, তবে তা ফর্মের পাশেই দেখানো হবে।
২.৩. ফ্ল্যাশ মেসেজ দিয়ে ত্রুটি বার্তা প্রদর্শন
কন্ট্রোলারে আপনি যদি ফর্ম ডেটা সেভ করতে না পারেন বা যদি কোনো ভ্যালিডেশন ত্রুটি থাকে, তবে আপনি Flash ব্যবহার করে ত্রুটি বার্তা প্রদর্শন করতে পারেন।
if ($this->Articles->save($article)) {
$this->Flash->success('আর্টিকেল সফলভাবে সেভ করা হয়েছে');
return $this->redirect(['action' => 'index']);
} else {
$this->Flash->error('ফর্মে কিছু ভুল আছে, অনুগ্রহ করে আবার চেষ্টা করুন');
}
এখানে:
$this->Flash->error(): ফর্মের ত্রুটি দেখানোর জন্য।$this->Flash->success(): সফল মেসেজ দেখানোর জন্য।
২.৪. একাধিক ত্রুটি বার্তা
একাধিক ত্রুটি বার্তা প্রদর্শন করতে আপনি নিচের কোডটি ব্যবহার করতে পারেন:
if ($article->getErrors()) {
foreach ($article->getErrors() as $field => $errors) {
foreach ($errors as $error) {
$this->Flash->error($error);
}
}
}
এটি সকল ত্রুটি বার্তা একে একে ফ্ল্যাশ মেসেজের মাধ্যমে দেখাবে।
CakePHP তে ফর্ম ডেটা হ্যান্ডলিং এবং ত্রুটি বার্তা প্রদর্শন একটি গুরুত্বপূর্ণ দিক। ফর্ম ডেটা গ্রহন করতে request->getData() ব্যবহার করা হয় এবং মডেল ভ্যালিডেশন এর মাধ্যমে ইনপুট ডেটার বৈধতা পরীক্ষা করা হয়। যখন ডেটা ভ্যালিড হয় না, তখন ত্রুটি বার্তা ব্যবহারকারীকে প্রদর্শন করা হয়, যা ব্যবহারকারীর জন্য একটি সঠিক নির্দেশনা প্রদান করে। এর ফলে CakePHP অ্যাপ্লিকেশনগুলোতে ফর্ম ডেটা হ্যান্ডলিং এবং ত্রুটি ব্যবস্থাপনা আরও সহজ এবং কার্যকর হয়।