Model Validation এবং Custom Validation Rules

মডেলস (Models) এবং ORM - কেকপিএইচপি (CakePHP) - Web Development

252

CakePHP তে Model Validation অ্যাপ্লিকেশন ডেভেলপমেন্টে খুবই গুরুত্বপূর্ণ। এটি ডেটার ইনপুট সঠিক কিনা তা যাচাই করার প্রক্রিয়া। মডেল ভ্যালিডেশন নিশ্চিত করে যে ব্যবহারকারী যে তথ্য পাঠাচ্ছে তা সঠিক ফরম্যাটে আছে এবং নির্দিষ্ট শর্তাবলী মেনে চলে। CakePHP মডেল ভ্যালিডেশন সিস্টেমটি খুবই শক্তিশালী এবং কাস্টম রুলস সহ বিভিন্ন ধরনের ভ্যালিডেশন রুলস সরবরাহ করে।


মডেল ভ্যালিডেশন কি?

CakePHP তে মডেল ভ্যালিডেশন একটি প্রক্রিয়া, যার মাধ্যমে ব্যবহারকারীর ইনপুট ডেটা যাচাই করা হয়। যখন ব্যবহারকারী কোনো ফর্ম সাবমিট করে, তখন এই ভ্যালিডেশন রুলসগুলি প্রয়োগ করা হয়। ভ্যালিডেশন যদি সফল হয়, তাহলে ডেটা ডাটাবেসে সংরক্ষিত হয়, অন্যথায় একটি ত্রুটি (Error) প্রদর্শিত হয়।

মডেল ভ্যালিডেশন সাধারণত Cake\ORM\Table ক্লাসের মধ্যে কনফিগার করা হয় এবং এটি validationDefault() মেথডের মাধ্যমে সংজ্ঞায়িত করা হয়।


CakePHP তে ডিফল্ট ভ্যালিডেশন

CakePHP মডেল ভ্যালিডেশন ডিফল্টভাবে কিছু সাধারণ রুলস প্রদান করে, যেমন:

  • notEmpty(): কোনো ফিল্ড ফাঁকা থাকা যাবে না।
  • email(): ইমেইল ঠিকানা ফরম্যাট সঠিক হতে হবে।
  • minLength(): ফিল্ডের মান কমপক্ষে নির্দিষ্ট দৈর্ঘ্যের হতে হবে।
  • maxLength(): ফিল্ডের মান নির্দিষ্ট দৈর্ঘ্যের বেশি হতে পারবে না।
  • numeric(): ফিল্ডে শুধুমাত্র সংখ্যা থাকতে হবে।

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

ধরা যাক, একটি Users মডেল তৈরি করতে চাই, যেখানে ব্যবহারকারীর নাম, ইমেইল এবং পাসওয়ার্ড যাচাই করতে হবে।

namespace App\Model\Table;

use Cake\ORM\Table;
use Cake\Validation\Validator;

class UsersTable extends Table
{
    public function validationDefault(Validator $validator): Validator
    {
        $validator
            ->requirePresence('username', 'create')
            ->notEmptyString('username', 'Username is required')
            ->minLength('username', 5, 'Username must be at least 5 characters long');

        $validator
            ->email('email', false, 'Please enter a valid email address')
            ->requirePresence('email', 'create')
            ->notEmptyString('email', 'Email is required');

        $validator
            ->requirePresence('password', 'create')
            ->notEmptyString('password', 'Password is required')
            ->minLength('password', 8, 'Password must be at least 8 characters long');

        return $validator;
    }
}

এই উদাহরণে:

  • username: ফিল্ডটি অবশ্যই ৫টি অক্ষরের কম হতে পারবে না এবং এটি ফাঁকা রাখা যাবে না।
  • email: এটি একটি বৈধ ইমেইল ঠিকানা হতে হবে এবং ফাঁকা রাখা যাবে না।
  • password: পাসওয়ার্ডটি কমপক্ষে ৮টি অক্ষরের হতে হবে এবং ফাঁকা রাখা যাবে না।

কাস্টম ভ্যালিডেশন রুলস

CakePHP তে আপনি কাস্টম ভ্যালিডেশন রুলস তৈরি করতে পারেন যা আপনার নির্দিষ্ট চাহিদা পূরণ করবে। কাস্টম রুল তৈরি করতে add() মেথড ব্যবহার করতে হয়।

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

ধরা যাক, আমাদের একটি কাস্টম ভ্যালিডেশন রুল তৈরি করতে হবে, যা নিশ্চিত করবে যে পাসওয়ার্ডে কমপক্ষে একটি বড় হাতের অক্ষর থাকতে হবে।

namespace App\Model\Table;

use Cake\ORM\Table;
use Cake\Validation\Validator;

class UsersTable extends Table
{
    public function validationDefault(Validator $validator): Validator
    {
        $validator
            ->requirePresence('password', 'create')
            ->notEmptyString('password', 'Password is required')
            ->minLength('password', 8, 'Password must be at least 8 characters long')
            ->add('password', 'custom', [
                'rule' => function ($value, $context) {
                    return preg_match('/[A-Z]/', $value);  // Check for at least one uppercase letter
                },
                'message' => 'Password must contain at least one uppercase letter.'
            ]);

        return $validator;
    }
}

এখানে:

  • add() মেথডের মাধ্যমে কাস্টম ভ্যালিডেশন রুল যুক্ত করা হয়েছে।
  • preg_match('/[A-Z]/', $value) এই রেগুলার এক্সপ্রেশনটি চেক করবে যে পাসওয়ার্ডে কমপক্ষে একটি বড় হাতের অক্ষর আছে কিনা।

কাস্টম ভ্যালিডেশন রুলস তৈরি করার সময় কিছু বিষয়

  1. কমপ্লেক্স লজিক: কখনও কখনও আপনার ভ্যালিডেশন রুলস শুধুমাত্র সহজ চেক না হয়ে জটিল লজিকাল যাচাই হতে পারে। যেমন, যদি একটি ফিল্ড নির্দিষ্ট মানের সঙ্গে তুলনা করতে হয় বা ডাটাবেসের অন্য কোনো টেবিলের মানের সঙ্গে তুলনা করতে হয়।
  2. মেসেজ কাস্টমাইজেশন: CakePHP তে আপনি কাস্টম মেসেজ ব্যবহার করতে পারেন, যা ভ্যালিডেশন ব্যর্থ হলে ব্যবহারকারীকে স্পষ্টভাবে বুঝতে সাহায্য করবে।
  3. অন্যান্য ভ্যালিডেশন রুলস: আপনি regex, inList, maxLength, minLength ইত্যাদি কাস্টম রুলস তৈরি করতে পারেন।

কাস্টম ভ্যালিডেশন রুলস ব্যবহার

যখন আপনি কাস্টম ভ্যালিডেশন রুলস তৈরি করবেন, তখন সেই রুলগুলো ব্যবহারকারীকে ইনপুট দেওয়ার সময় স্বয়ংক্রিয়ভাবে যাচাই করা হবে। যদি কোনো ইনপুট ভ্যালিড না হয়, তাহলে CakePHP একটি ত্রুটি বার্তা প্রদান করবে যা আপনি আপনার ভিউতে প্রদর্শন করতে পারবেন।

if ($user->save($userEntity)) {
    // Success
} else {
    // Validation errors
    debug($userEntity->getErrors());
}

এখানে $userEntity->getErrors() মেথডটি ভ্যালিডেশন ত্রুটির বার্তা ফেরত দেবে, যা আপনি ফর্মে দেখাতে পারবেন।


CakePHP তে মডেল ভ্যালিডেশন এবং কাস্টম ভ্যালিডেশন রুলস ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনে ডেটার গুণমান নিশ্চিত করতে পারেন। ডিফল্ট রুলস যেমন notEmpty(), email(), minLength() এর মাধ্যমে আপনি সহজেই সাধারণ যাচাই করতে পারবেন, আবার কাস্টম ভ্যালিডেশন রুলস ব্যবহার করে আপনার অ্যাপ্লিকেশনের জন্য আরও বিশেষ যাচাই যুক্ত করতে পারবেন। এটি আপনার অ্যাপ্লিকেশনের নিরাপত্তা এবং সঠিকতা নিশ্চিত করতে অত্যন্ত গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...