Skill

ফর্মস এবং ডেটা ভ্যালিডেশন

জী ফ্রেমওয়ার্ক (Yii Framework) - Web Development

246

Yii ফ্রেমওয়ার্কে ফর্মস এবং ডেটা ভ্যালিডেশন গুরুত্বপূর্ণ অংশ হিসেবে কাজ করে, বিশেষত যখন আপনি ইউজার ইনপুট গ্রহণ করেন এবং তা সঠিকভাবে প্রক্রিয়া করতে চান। Yii এর ফর্ম এবং ভ্যালিডেশন সিস্টেম শক্তিশালী এবং নমনীয়, যা ডেভেলপারদের জন্য ইনপুট ডেটা ম্যানিপুলেশন ও যাচাইকরণ প্রক্রিয়াকে সহজ করে তোলে।


Yii তে ফর্মস

Yii ফ্রেমওয়ার্কে ফর্ম প্রক্রিয়া অনেকটাই Active Record এবং Model ভিত্তিক হয়। প্রতিটি ফর্ম একটি Model ক্লাস হিসেবে কাজ করে, যার মাধ্যমে ইউজার ইনপুট ডেটা গ্রহণ, যাচাই এবং সঞ্চয় করা হয়।

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

ফর্ম মডেল তৈরি করা

Yii তে ফর্ম তৈরি করতে, প্রথমে একটি মডেল ক্লাস তৈরি করতে হয়। এই মডেল ক্লাসে আপনি ইনপুট ফিল্ড এবং তাদের জন্য ভ্যালিডেশন রুলস (validation rules) সংজ্ঞায়িত করেন।

উদাহরণ: একটি সিম্পল কন্ট্যাক্ট ফর্ম মডেল

namespace app\models;

use Yii;
use yii\base\Model;

class ContactForm extends Model
{
    public $name;
    public $email;
    public $subject;
    public $body;

    // ভ্যালিডেশন রুলস
    public function rules()
    {
        return [
            [['name', 'email', 'subject', 'body'], 'required'],  // সকল ফিল্ডই আবশ্যক
            ['email', 'email'],  // ইমেইল ফিল্ডে সঠিক ইমেইল ফরম্যাট থাকতে হবে
            ['body', 'string', 'min' => 10],  // বডি ফিল্ডে কমপক্ষে 10 অক্ষর থাকতে হবে
        ];
    }

    // কাস্টম ভ্যালিডেশন
    public function contact()
    {
        if ($this->validate()) {
            // ডেটা প্রোসেস বা সেভ করা
            return true;
        }
        return false;
    }
}

এখানে, rules() মেথডে বিভিন্ন ভ্যালিডেশন রুলস উল্লেখ করা হয়েছে:

  • required: ফিল্ডটি খালি থাকতে পারবে না।
  • email: এটি নিশ্চিত করে যে ইমেইল ফিল্ডে সঠিক ইমেইল ফরম্যাট আছে।
  • string: বডি ফিল্ডে কমপক্ষে 10টি অক্ষর থাকতে হবে।

ডেটা ভ্যালিডেশন

Yii ফ্রেমওয়ার্কে ডেটা ভ্যালিডেশন একটি অত্যন্ত গুরুত্বপূর্ণ অংশ। যখন ইউজার ফর্মের মাধ্যমে ইনপুট দেয়, তখন সেই ইনপুট যাচাই করা হয়, যাতে সঠিক ডেটা গ্রহণ করা হয়। Yii তে ভ্যালিডেশন দুটি প্রধানভাবে করা যায়:

  1. অটো-ভ্যালিডেশন (Auto-validation): এটি Yii দ্বারা সরাসরি পরিচালিত হয় যখন আপনি validate() মেথড কল করেন।
  2. কাস্টম ভ্যালিডেশন: এতে আপনি নিজের ভ্যালিডেশন লজিক তৈরি করেন যা মডেল বা ফর্মে প্রয়োগ করা হয়।

অটো-ভ্যালিডেশন

Yii এর ফর্ম মডেল স্বয়ংক্রিয়ভাবে ইনপুট যাচাই করে, যখন আপনি validate() মেথড কল করেন। যদি কোনো ইনপুট ভুল হয়, তবে তা ওয়্যারিং বা এরর মেসেজ হিসাবে ভ্যালিডেশন লোগে যুক্ত হয়।

উদাহরণ:

$model = new ContactForm();

if ($model->load(Yii::$app->request->post()) && $model->validate()) {
    // ফর্ম ডেটা সঠিক হলে, ডেটা সেভ বা প্রোসেস করুন
    // উদাহরণস্বরূপ, ইমেইল পাঠানো
} else {
    // যদি ডেটা ভুল হয়, তাহলে এরর মেসেজ প্রদর্শন করুন
    return $this->render('contact', ['model' => $model]);
}

এখানে, load() মেথড দিয়ে ইনপুট ডেটা মডেলে লোড করা হয় এবং তারপর validate() মেথড দিয়ে ইনপুট যাচাই করা হয়।

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

Yii আপনাকে কাস্টম ভ্যালিডেশন রুলস তৈরি করার সুযোগ দেয়, যার মাধ্যমে আপনি নিজস্ব লজিক ব্যবহার করে ইনপুট যাচাই করতে পারেন।

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

public function validateName($attribute, $params)
{
    if (strlen($this->name) < 3) {
        $this->addError($attribute, 'নামটি কমপক্ষে ৩ অক্ষরের হতে হবে');
    }
}

এখানে, validateName মেথডটি কাস্টম ভ্যালিডেশন লজিক প্রদান করছে, যেখানে নাম ফিল্ডের দৈর্ঘ্য যদি ৩ অক্ষরের কম হয়, তবে একটি এরর মেসেজ যোগ করা হবে।

এছাড়া, এই কাস্টম ভ্যালিডেশন রুলস মডেলের rules() মেথডে অন্তর্ভুক্ত করতে হয়:

public function rules()
{
    return [
        ['name', 'validateName'],  // কাস্টম ভ্যালিডেশন
    ];
}

ফর্মে ইনপুট ডেটা প্রদর্শন

ফর্মের ইনপুট ডেটা গ্রহণ করার পর, যদি কোনো ভুল থাকে, তবে ইউজারকে তা জানানোর জন্য ফর্ম ভিউতে এরর মেসেজ প্রদর্শন করা হয়। Yii তে ফর্ম ভিউ তৈরি করার সময়, আপনি সহজেই এই এরর মেসেজগুলো শো করতে পারেন।

উদাহরণ: ফর্ম ভিউ

<?php
use yii\widgets\ActiveForm;

$form = ActiveForm::begin(); ?>

<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'subject') ?>
<?= $form->field($model, 'body')->textarea() ?>

<div class="form-group">
    <?= \yii\helpers\Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>

ফর্মটি সাবমিট করার পর, যদি কোনো ইনপুট ভুল থাকে, তবে Yii স্বয়ংক্রিয়ভাবে এরর মেসেজ প্রদর্শন করবে।


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

Yii তে বিভিন্ন ধরনের ভ্যালিডেশন রুলস রয়েছে, যেগুলো ব্যবহার করে আপনি বিভিন্ন প্রকার ইনপুট যাচাই করতে পারেন। কিছু সাধারণ রুলস হল:

  • required: ফিল্ডটি খালি থাকতে পারবে না।
  • email: ফিল্ডে সঠিক ইমেইল ফরম্যাট থাকতে হবে।
  • string: স্ট্রিং টাইপ ডেটার জন্য।
  • integer: পূর্ণসংখ্যা (integer) যাচাই।
  • match: নির্দিষ্ট রেগুলার এক্সপ্রেশন (regular expression) দিয়ে যাচাই।
  • date: তারিখ যাচাই।
  • url: ইউআরএল ফরম্যাট যাচাই।

উদাহরণ:

public function rules()
{
    return [
        [['email'], 'email'],  // সঠিক ইমেইল ফরম্যাট চেক
        [['name'], 'string', 'max' => 50],  // ৫০ অক্ষরের মধ্যে নাম থাকতে হবে
    ];
}

সারাংশ

Yii ফ্রেমওয়ার্কে ফর্মস এবং ডেটা ভ্যালিডেশন একটি গুরুত্বপূর্ণ অংশ। ফর্মসের মাধ্যমে ইউজার ইনপুট নেয়া এবং সেই ইনপুট যাচাই করা যায়। Yii এর শক্তিশালী ভ্যালিডেশন সিস্টেম ডেভেলপারদের জন্য সহজে ইউজার ইনপুট যাচাই এবং সঠিক ডেটা প্রক্রিয়া করার সুবিধা প্রদান করে। মডেল ক্লাসের rules() মেথডের মাধ্যমে আপনি সহজেই ভ্যালিডেশন রুলস সংজ্ঞায়িত করতে পারেন এবং কাস্টম ভ্যালিডেশনও তৈরি করতে পারেন।

Content added By

Yii ফ্রেমওয়ার্কে ফর্ম তৈরি এবং ডেটা বাইন্ডিং (Data Binding) দুটি গুরুত্বপূর্ণ ধারণা। ফর্মের মাধ্যমে ইউজার ইনপুট সংগ্রহ করা হয় এবং ডেটা বাইন্ডিং ব্যবহার করে এই ইনপুটগুলো মডেল (Model) ক্লাসে স্টোর করা হয়। Yii 2-এ ফর্ম এবং ডেটা বাইন্ডিং প্রক্রিয়াটি অত্যন্ত সহজ এবং কার্যকরী। এই প্রক্রিয়া আপনার অ্যাপ্লিকেশনকে আরও ডাইনামিক এবং ইউজার-ফ্রেন্ডলি করে তোলে।


Yii 2 এ ফর্ম তৈরি

Yii 2 ফ্রেমওয়ার্কে ফর্ম তৈরি করার জন্য আপনাকে একটি মডেল (Model) ক্লাস তৈরি করতে হয়। মডেলটি ফর্মের ডেটা সংরক্ষণ করবে এবং ভ্যালিডেশন (Validation) প্রয়োগ করবে। এরপর আপনি ফর্ম ভিউ তৈরি করে ইউজারের ইনপুট গ্রহণ করতে পারেন।

১. মডেল তৈরি করা

ফর্মের জন্য একটি মডেল ক্লাস তৈরি করতে হবে যেখানে ডেটা প্রোপার্টি এবং ভ্যালিডেশন নিয়মগুলো থাকবে।

namespace app\models;

use Yii;
use yii\base\Model;

class ContactForm extends Model
{
    public $name;
    public $email;
    public $subject;
    public $body;
    
    // ভ্যালিডেশন নিয়ম
    public function rules()
    {
        return [
            [['name', 'email', 'subject', 'body'], 'required'],
            ['email', 'email'],
        ];
    }
}

এখানে ContactForm একটি ক্লাস যা মডেল হিসেবে কাজ করছে। এর মধ্যে কিছু পাবলিক প্রোপার্টি রয়েছে, যেমন name, email, subject, body, যা ইউজার ইনপুট ধারণ করবে।

২. কন্ট্রোলার তৈরি করা

কন্ট্রোলারে ফর্মের জন্য একটি অ্যাকশন তৈরি করতে হবে, যাতে ফর্মটি রেন্ডার এবং সাবমিট করা যায়।

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\ContactForm;

class SiteController extends Controller
{
    public function actionContact()
    {
        $model = new ContactForm();
        
        // ফর্ম সাবমিট হলে
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            // ফর্ম সাকসেসফুল হলে প্রক্রিয়া চালান
            Yii::$app->session->setFlash('success', 'Thanks for contacting us!');
            return $this->refresh(); // ফর্ম রিফ্রেশ
        }
        
        // ফর্ম রেন্ডার করা
        return $this->render('contact', [
            'model' => $model,
        ]);
    }
}

এখানে actionContact() ফাংশনটি ফর্ম রেন্ডার এবং ইনপুট ডেটা হ্যান্ডলিং করবে। load() মেথড ফর্মের ডেটা মডেলে লোড করে এবং validate() মেথডে ভ্যালিডেশন চেক করা হয়।

৩. ভিউ ফাইল তৈরি করা

ফর্ম ভিউ তৈরি করতে হবে যাতে ইউজার ইনপুট নিতে পারেন। Yii 2-এ ফর্ম তৈরি করার জন্য ActiveForm ব্যবহার করা হয়।

use yii\helpers\Html;
use yii\widgets\ActiveForm;

$this->title = 'Contact Us';
?>

<h1><?= Html::encode($this->title) ?></h1>

<?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, 'name') ?>
    <?= $form->field($model, 'email') ?>
    <?= $form->field($model, 'subject') ?>
    <?= $form->field($model, 'body')->textarea() ?>

    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>

<?php ActiveForm::end(); ?>

এখানে ActiveForm উইজেটের মাধ্যমে ফর্মের ইনপুট ফিল্ডগুলো তৈরি করা হয়েছে। প্রতিটি ইনপুট ফিল্ডের সাথে মডেলের প্রপার্টি বাইন্ড করা হয়েছে। field() মেথডটি ফর্ম ফিল্ড তৈরি করে এবং প্রপার্টি name, email, subject, body এর সাথে বাইন্ড করা হয়।


ডেটা বাইন্ডিং (Data Binding)

Yii 2-এ ডেটা বাইন্ডিং হল এমন একটি প্রক্রিয়া যেখানে মডেল এবং ভিউ-এর মধ্যে ডেটা এক্সচেঞ্জ করা হয়। যখন ফর্মে ইউজার ইনপুট জমা দেন, তখন ডেটা মডেল ক্লাসের প্রোপার্টিতে স্টোর করা হয়। সেইসাথে, মডেল থেকে ভিউতে ডেটা পাস করাও সহজ।

ডেটা বাইন্ডিং প্রক্রিয়া

  1. ডেটা লোড করা: ফর্ম সাবমিট হলে load() মেথডের মাধ্যমে ইনপুট ডেটা মডেলে লোড করা হয়।

    $model->load(Yii::$app->request->post());
    
  2. ভ্যালিডেশন: ইনপুট ডেটা ভ্যালিডেশন নিয়মের মাধ্যমে যাচাই করা হয়।

    if ($model->validate()) {
        // ডেটা ভ্যালিড হলে প্রক্রিয়া চালান
    }
    
  3. ডেটা রিটার্ন: মডেলের প্রোপার্টি ভিউতে পাস করা হয় এবং সেখানে প্রদর্শিত হয়।

    return $this->render('contact', [
        'model' => $model,
    ]);
    

ফর্মে মডেল এবং ভিউয়ের মধ্যে ডেটা বাইন্ডিং

Yii 2-এ ডেটা বাইন্ডিং সম্পূর্ণভাবে অটোমেটিক। যখন আপনি ফর্ম ইনপুট জমা দেন, তখন Yii ফ্রেমওয়ার্ক সেই ইনপুট মডেলের প্রোপার্টির সাথে অটোমেটিক্যালি বাইন্ড করে দেয়। নিচে এর একটি উদাহরণ দেওয়া হলো:

মডেল ক্লাস:

namespace app\models;

use yii\base\Model;

class ContactForm extends Model
{
    public $name;
    public $email;
    public $subject;
    public $body;
}

কন্ট্রোলার ক্লাস:

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\ContactForm;

class SiteController extends Controller
{
    public function actionContact()
    {
        $model = new ContactForm();
        
        // ডেটা লোড করা
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            // ডেটা সফলভাবে বাইন্ড হলে
            Yii::$app->session->setFlash('success', 'Thanks for contacting us!');
            return $this->refresh();
        }
        
        return $this->render('contact', [
            'model' => $model,
        ]);
    }
}

ভিউ ফাইল:

use yii\helpers\Html;
use yii\widgets\ActiveForm;

$this->title = 'Contact Us';
?>

<h1><?= Html::encode($this->title) ?></h1>

<?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, 'name') ?>
    <?= $form->field($model, 'email') ?>
    <?= $form->field($model, 'subject') ?>
    <?= $form->field($model, 'body')->textarea() ?>

    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>

<?php ActiveForm::end(); ?>

এখানে, ActiveForm ইউজার ইনপুট সংগ্রহ করবে এবং load() মেথডের মাধ্যমে সেই ইনপুট মডেলে পাঠানো হবে। পরবর্তীতে মডেলের validate() মেথড ব্যবহার করে ইনপুটের ভ্যালিডেশন চেক করা হবে।


সারাংশ

Yii 2-এ ফর্ম তৈরি এবং ডেটা বাইন্ডিং একটি সহজ ও শক্তিশালী প্রক্রিয়া। ফর্মের মাধ্যমে ইউজার ইনপুট নিয়ে মডেল ক্লাসে সেট করা হয় এবং পরে তা প্রক্রিয়াজাত করা হয়। ActiveForm ব্যবহার করে ফর্ম তৈরি করা হয় এবং load()validate() মেথডের মাধ্যমে ইনপুট ডেটা মডেলে বাইন্ড করা হয়। এই পদ্ধতিটি Yii 2-কে অত্যন্ত ডাইনামিক এবং ইউজার-ফ্রেন্ডলি করে তোলে।

Content added By

Yii ফ্রেমওয়ার্কের ফর্ম ভ্যালিডেশন সিস্টেম খুবই শক্তিশালী এবং সহজে কাস্টমাইজ করা যায়। এটি ডেটা ইনপুটের সঠিকতা নিশ্চিত করতে সাহায্য করে এবং ব্যবহারকারীর ভুল ইনপুটের জন্য সঠিক ত্রুটি বার্তা প্রদান করে। Yii-তে ফর্ম ভ্যালিডেশন মূলত মডেল (Model) স্তরে করা হয়, যেখানে ডেটাবেসের টেবিলের কলামের জন্য ভ্যালিডেশন রুলস সেট করা হয়।


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

ফর্ম ভ্যালিডেশন হল এমন একটি প্রক্রিয়া, যা ফর্মে দেওয়া ইনপুট ডেটাকে যাচাই করে, এটি সঠিক ফরম্যাটে আছে কিনা বা অন্যান্য শর্ত পূরণ করছে কিনা তা নিশ্চিত করে। Yii ফ্রেমওয়ার্কে, ফর্ম ভ্যালিডেশন সাধারণত মডেল ক্লাসের মাধ্যমে পরিচালিত হয়, যেখানে আপনি নির্দিষ্ট ইনপুটের জন্য বিভিন্ন ভ্যালিডেশন রুলস সংজ্ঞায়িত করেন।


Yii তে ফর্ম ভ্যালিডেশন রুলস

Yii-তে ফর্ম ভ্যালিডেশন রুলস হল কাস্টম বা প্রিসেট শর্ত যা ইনপুট ডেটার সাথে মিলিয়ে যাচাই করা হয়। Yii বিভিন্ন ধরনের ভ্যালিডেশন রুল প্রদান করে যেমন, required, email, integer, string, unique ইত্যাদি। নিচে Yii-তে ব্যবহৃত কিছু সাধারণ ভ্যালিডেশন রুল আলোচনা করা হলো।


সাধারণ ভ্যালিডেশন রুলস

১. required

required রুলটি ইনপুট ফিল্ডটি খালি থাকতে পারবে না, তা নিশ্চিত করে। যদি এটি খালি থাকে, তাহলে ভ্যালিডেশন ব্যর্থ হয়।

public function rules()
{
    return [
        [['name', 'email'], 'required'], // name এবং email ফিল্ডগুলি আবশ্যক
    ];
}

২. email

email রুলটি ইনপুটকে বৈধ ইমেল ঠিকানা হিসেবে যাচাই করে।

public function rules()
{
    return [
        ['email', 'email'], // email ফিল্ডটি বৈধ ইমেল হতে হবে
    ];
}

৩. string

string রুলটি ইনপুটটি একটি স্ট্রিং হতে হবে কিনা তা যাচাই করে। এই রুলের জন্য সর্বনিম্ন এবং সর্বাধিক দৈর্ঘ্যও নির্ধারণ করা যায়।

public function rules()
{
    return [
        ['username', 'string', 'min' => 3, 'max' => 20], // username ফিল্ডের দৈর্ঘ্য ৩ থেকে ২০ অক্ষরের মধ্যে হতে হবে
    ];
}

৪. integer

integer রুলটি ইনপুটটি একটি পূর্ণসংখ্যা হতে হবে কিনা তা যাচাই করে।

public function rules()
{
    return [
        ['age', 'integer'], // age ফিল্ডটি একটি পূর্ণসংখ্যা হতে হবে
    ];
}

৫. number

number রুলটি ইনপুটটি একটি বৈধ সংখ্যা হতে হবে কিনা তা যাচাই করে।

public function rules()
{
    return [
        ['price', 'number'], // price ফিল্ডটি একটি সংখ্যা হতে হবে
    ];
}

৬. unique

unique রুলটি ডেটাবেসে একটি বিশেষ কলামে প্রদত্ত মানের জন্য কোন ডুপ্লিকেট না থাকার নিশ্চয়তা দেয়। এটি সাধারণত লগইন বা ইমেল ঠিকানার ক্ষেত্রে ব্যবহার করা হয়।

public function rules()
{
    return [
        ['email', 'unique'], // email ফিল্ডটি ডুপ্লিকেট হতে পারবে না
    ];
}

৭. match

match রুলটি ইনপুটের সাথে একটি নির্দিষ্ট প্যাটার্ন মিলছে কিনা তা যাচাই করে। এটি সাধারণত রেগুলার এক্সপ্রেশন (Regex) এর মাধ্যমে নির্ধারিত হয়।

public function rules()
{
    return [
        ['phone', 'match', 'pattern' => '/^\+?\d{10,15}$/'], // phone ফিল্ডটি ফোন নম্বরের ফরম্যাটে হতে হবে
    ];
}

৮. compare

compare রুলটি দুটি ফিল্ডের মানের তুলনা করে, সাধারণত পাসওয়ার্ড এবং কনফার্ম পাসওয়ার্ড ক্ষেত্রগুলোর জন্য এটি ব্যবহার করা হয়।

public function rules()
{
    return [
        ['password_confirm', 'compare', 'compareAttribute' => 'password'], // password_confirm ফিল্ডটি password ফিল্ডের সমান হতে হবে
    ];
}

৯. url

url রুলটি ইনপুটকে একটি বৈধ URL হিসেবে যাচাই করে।

public function rules()
{
    return [
        ['website', 'url'], // website ফিল্ডটি একটি বৈধ URL হতে হবে
    ];
}

১০. safe

safe রুলটি নির্দেশ করে যে এই ফিল্ডটি ফর্ম ডেটা হিসাবে গ্রহণযোগ্য এবং এটি ভ্যালিডেশন প্রক্রিয়ার অংশ হবে না। এটি সাধারণত ফর্মের বাইরে থাকা তথ্য বা ইন্টারনাল ডেটা সংরক্ষণের জন্য ব্যবহার করা হয়।

public function rules()
{
    return [
        ['created_at', 'safe'], // created_at ফিল্ডটি ভ্যালিডেশন প্রক্রিয়ার অংশ হবে না
    ];
}

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

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

public function rules()
{
    return [
        ['password', 'validatePasswordStrength'],
    ];
}

public function validatePasswordStrength($attribute, $params)
{
    if (strlen($this->$attribute) < 6) {
        $this->addError($attribute, 'Password must be at least 6 characters long.');
    }
}

এখানে validatePasswordStrength কাস্টম ভ্যালিডেশন রুল তৈরি করা হয়েছে, যা পাসওয়ার্ডের দৈর্ঘ্য যাচাই করে।


ভ্যালিডেশন সিকোয়েন্স

Yii-তে ফর্ম ভ্যালিডেশন সাধারণত নিম্নলিখিত ক্রমে সম্পন্ন হয়:

  1. প্রথমে required রুলটি চেক করা হয়।
  2. এরপর data type রুল (যেমন: string, integer, email ইত্যাদি) চেক করা হয়।
  3. custom বা compare রুলগুলি শেষের দিকে প্রয়োগ করা হয়।

সারাংশ

Yii ফ্রেমওয়ার্কের ফর্ম ভ্যালিডেশন সিস্টেম আপনাকে ইনপুট ডেটা যাচাই করার জন্য একটি শক্তিশালী এবং নমনীয় পদ্ধতি প্রদান করে। আপনি ডিফল্ট ভ্যালিডেশন রুল যেমন required, email, string, integer, unique ইত্যাদি ব্যবহার করতে পারেন, বা কাস্টম ভ্যালিডেশন রুল তৈরি করতে পারেন। এই ভ্যালিডেশন সিস্টেমটি ইনপুট ডেটার সঠিকতা নিশ্চিত করতে সাহায্য করে এবং ব্যবহারকারীর ভুল ইনপুটের জন্য উপযুক্ত ত্রুটি বার্তা প্রদান করে।

Content added By

Yii ফ্রেমওয়ার্কে Custom Validation এবং Error Messages কাস্টম ভ্যালিডেশন লজিক তৈরি করতে এবং ব্যবহারকারীদের জন্য স্পষ্ট, কাস্টমাইজড ত্রুটি বার্তা প্রদানের জন্য গুরুত্বপূর্ণ উপাদান। Yii ফ্রেমওয়ার্কের ActiveRecord এবং Model ক্লাসগুলি আপনাকে ডেটা যাচাই এবং ত্রুটি বার্তা প্রদানে খুবই সহায়ক টুলস প্রদান করে।


Custom Validation

Yii ফ্রেমওয়ার্কে Custom Validation সাধারণত Model ক্লাসে ব্যবহার করা হয়, যেখানে আপনি নিজস্ব ভ্যালিডেশন ফাংশন তৈরি করতে পারেন। Yii-তে ভ্যালিডেশন রুলস মূলত মডেল ক্লাসের মধ্যে ডিফাইন করা হয়।

১. Custom Validation রুলস তৈরি করা

আপনার মডেল ক্লাসে rules() মেথডের মধ্যে কাস্টম ভ্যালিডেশন রুল যুক্ত করতে হয়। Yii-তে Custom Validator তৈরির জন্য আপনি একটি ফাংশন লিখতে পারেন যা নির্দিষ্ট একটি ফিল্ডের ভ্যালিডেশন পরিচালনা করবে।

Custom Validation Example:

class User extends \yii\db\ActiveRecord
{
    public $password_repeat;  // পাসওয়ার্ডের পুনরাবৃত্তি ফিল্ড

    public function rules()
    {
        return [
            [['password', 'password_repeat'], 'required'],
            ['password', 'validatePassword'], // কাস্টম ভ্যালিডেটর
        ];
    }

    // কাস্টম পাসওয়ার্ড ভ্যালিডেটর
    public function validatePassword($attribute, $params)
    {
        if ($this->password !== $this->password_repeat) {
            $this->addError($attribute, 'পাসওয়ার্ড মিলছে না!');
        }
    }
}

এখানে password এবং password_repeat ফিল্ডের জন্য একটি কাস্টম ভ্যালিডেটর validatePassword ব্যবহার করা হয়েছে। এই ভ্যালিডেটরে যদি দুইটি পাসওয়ার্ড না মেলে, তাহলে addError() মেথড ব্যবহার করে একটি ত্রুটি বার্তা যুক্ত করা হয়।

২. Built-in Validators ব্যবহার

Yii ফ্রেমওয়ার্কে কিছু সাধারণ বিল্ট-ইন ভ্যালিডেটরও রয়েছে, যেমন:

  • required: ফিল্ডটি অবশ্যই পূর্ণ হতে হবে।
  • email: ইমেইল ঠিকানা যাচাই করে।
  • url: URL ফর্ম্যাট যাচাই করে।
  • string: স্ট্রিংয়ের দৈর্ঘ্য যাচাই করে।

আপনি এসব বিল্ট-ইন ভ্যালিডেটর এবং কাস্টম ভ্যালিডেটরের সংমিশ্রণও ব্যবহার করতে পারেন।


Error Messages

Yii ফ্রেমওয়ার্কে Error Messages হল সেই বার্তা যা ব্যবহারকারীকে একটি নির্দিষ্ট ফিল্ডের ভুল ইনপুটের জন্য দেখানো হয়। আপনি নিজস্ব ত্রুটি বার্তা কাস্টমাইজ করতে পারেন যা ব্যবহারকারীর জন্য আরও স্পষ্ট এবং সহায়ক হবে।

১. Error Messages কাস্টমাইজেশন

এটি আপনি addError() মেথডের মাধ্যমে করতে পারেন, যেমন আমরা পূর্বের উদাহরণে দেখেছি। ত্রুটি বার্তাগুলি কাস্টমাইজ করতে, আপনি নিজস্ব বার্তা পাঠাতে পারবেন।

Custom Error Message Example:

public function validatePassword($attribute, $params)
{
    if ($this->password !== $this->password_repeat) {
        $this->addError($attribute, 'পাসওয়ার্ড দুটি মেলেনি, দয়া করে আবার পরীক্ষা করুন!');
    }
}

২. Error Message Language Customization

Yii-তে আপনি ত্রুটি বার্তাগুলি ভাষানুসারে কাস্টমাইজ করতে পারেন। Yii i18n (internationalization) সিস্টেম ব্যবহার করে মাল্টি-ল্যাঙ্গুয়েজ ত্রুটি বার্তা প্রদানের সুবিধা দেয়।

আপনি messages ফোল্ডারে ত্রুটি বার্তাগুলি কাস্টমাইজ করতে পারেন। যেমন:

messages/
    en-US/
        app.php
    bn-BD/
        app.php

এখানে আপনি ইংরেজি এবং বাংলা ভাষার জন্য আলাদা আলাদা ত্রুটি বার্তা সংরক্ষণ করতে পারেন।

বাংলা ত্রুটি বার্তা উদাহরণ (messages/bn-BD/app.php):

return [
    'Required field' => 'এটি একটি আবশ্যক ক্ষেত্র',
    'Password mismatch' => 'পাসওয়ার্ড দুটি মেলেনি',
];

৩. Default Error Messages

Yii কিছু ডিফল্ট ত্রুটি বার্তা প্রদান করে, যেমন:

  • 'This value is invalid.': যদি ইনপুট ভ্যালিডেশন ব্যর্থ হয়।
  • 'This field cannot be blank.': যদি একটি আবশ্যক ফিল্ড ফাঁকা থাকে।
  • 'The value "{value}" is not a valid {attribute}.': যদি ইনপুটটি নির্দিষ্ট ধরনের না হয় (যেমন, ইমেইল বা URL)।

আপনি চাইলে এই ডিফল্ট বার্তাগুলিকে yii\base\DynamicModel ক্লাস ব্যবহার করে কাস্টমাইজ করতে পারেন।


Error Message Display

এখন আপনি যখন একটি মডেল ইনস্ট্যান্স ভ্যালিডেট করবেন, তখন ত্রুটি বার্তা মডেল থেকে বের করে, ভিউতে প্রদর্শন করা হবে। নিচের মতো:

$model = new User();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
    // সঠিক ইনপুট
} else {
    // ত্রুটি বার্তা প্রদর্শন
    foreach ($model->errors as $error) {
        echo $error[0]; // প্রথম ত্রুটি বার্তা দেখানো হবে
    }
}

এখানে $model->errors অ্যারে তে সমস্ত ত্রুটি বার্তা থাকবে এবং আপনি এগুলি লুপের মাধ্যমে ভিউতে প্রদর্শন করতে পারবেন।


সারাংশ

  • Custom Validation আপনাকে মডেল ক্লাসে নিজের ভ্যালিডেশন রুল তৈরি করার সুযোগ দেয়, যেমন পাসওয়ার্ড মিলানো বা অন্য কোন কাস্টম চেক করা।
  • Error Messages ব্যবহারকারীকে পরিষ্কার, কাস্টম বার্তা প্রদানে সহায়ক, এবং আপনি Yii-র built-in ত্রুটি বার্তা অথবা নিজস্ব বার্তা কাস্টমাইজ করতে পারেন।
  • Yii ফ্রেমওয়ার্কের i18n সিস্টেমের মাধ্যমে আপনি ত্রুটি বার্তা বিভিন্ন ভাষায় কাস্টমাইজ করতে পারবেন।
  • Yii ত্রুটি বার্তাগুলি প্রদর্শন করার জন্য সরল এবং কার্যকর উপায় প্রদান করে যা ডেভেলপারদের জন্য অনেক সাহায্যকারী।

এভাবে আপনি Yii ফ্রেমওয়ার্কে কাস্টম ভ্যালিডেশন এবং ত্রুটি বার্তা ব্যবহার করে আরও উন্নত ও ব্যবহারকারীর জন্য সহজ বান্ধব ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন।

Content added By

Yii ফ্রেমওয়ার্কে ফর্ম সাবমিশন এবং ডেটা প্রসেসিং খুবই গুরুত্বপূর্ণ। এটি ব্যবহারকারীদের ইনপুট গ্রহণ, ডেটা ভ্যালিডেশন এবং সেই ডেটা নিরাপদভাবে প্রসেস করার একটি সুসংগঠিত প্রক্রিয়া। Yii ফ্রেমওয়ার্কে ফর্ম তৈরি, ডেটা সংগ্রহ এবং সংরক্ষণ খুব সহজ এবং দ্রুত হতে পারে যদি আপনি ফ্রেমওয়ার্কের বিল্ট-ই বৈশিষ্ট্য ব্যবহার করেন।

এই টিউটোরিয়ালে আমরা Yii ফ্রেমওয়ার্কে ফর্ম সাবমিশন এবং ডেটা প্রসেসিং এর প্রক্রিয়া আলোচনা করব।


ফর্ম সাবমিশন এবং ডেটা প্রসেসিং: প্রাথমিক ধারণা

ফর্ম সাবমিশন প্রক্রিয়ায় ইউজারের ইনপুট সংগ্রহ করা হয় এবং এরপর সেই ইনপুট প্রক্রিয়াজাত (process) এবং ভ্যালিডেট করা হয়। Yii ফ্রেমওয়ার্কে এই প্রক্রিয়া খুব সহজ। এটি সাধারণত দুটি প্রধান অংশে বিভক্ত:

  1. ফর্ম তৈরি এবং ভিউ (View) - যেখানে ইউজার ইনপুট নেবেন।
  2. কন্ট্রোলার - যেখানে ইনপুট প্রসেস করা হবে এবং ডেটা সেভ করা হবে।
  3. মডেল - যেখানে ইনপুটের ভ্যালিডেশন এবং প্রক্রিয়াজাত করা হবে।

ফর্ম তৈরি করা

Yii ফ্রেমওয়ার্কে ফর্ম তৈরি করার জন্য প্রথমে একটি মডেল ক্লাস তৈরি করতে হয়। এই মডেল ক্লাসের মধ্যে আমরা ইনপুট ফিল্ডের জন্য attribute এবং সেই ইনপুটের জন্য rules (ভ্যালিডেশন) নির্ধারণ করি।

১. মডেল তৈরি করা

প্রথমে একটি মডেল ক্লাস তৈরি করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি সিম্পল কন্ট্যাক্ট ফর্ম তৈরি করা হচ্ছে।

namespace app\models;

use Yii;
use yii\base\Model;

class ContactForm extends Model
{
    public $name;
    public $email;
    public $message;

    // ভ্যালিডেশন রুলস
    public function rules()
    {
        return [
            [['name', 'email', 'message'], 'required'],  // সব ফিল্ডই আবশ্যক
            ['email', 'email'],  // ইমেইল ফিল্ডে বৈধ ইমেইল চেক করা
        ];
    }
}

এই মডেলে তিনটি পাবলিক অ্যাট্রিবিউট আছে: name, email, এবং message। এছাড়া rules() মেথডে আমরা ভ্যালিডেশন রুলস তৈরি করেছি, যেমন:

  • required: এই ফিল্ডগুলো অবশ্যই পূর্ণ করতে হবে।
  • email: ইমেইল ফিল্ডে একটি বৈধ ইমেইল ঠিকানা থাকতে হবে।

২. ভিউ তৈরি করা

এখন ফর্মের জন্য একটি ভিউ তৈরি করতে হবে। এই ফর্মে ইউজার নাম, ইমেইল এবং মেসেজ ইনপুট দিতে পারবে। ফর্মের ভিউ সাধারণত views ফোল্ডারে থাকে।

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;

/* @var $this yii\web\View */
/* @var $model app\models\ContactForm */
?>

<h1>Contact Us</h1>

<?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, 'name') ?>
    <?= $form->field($model, 'email') ?>
    <?= $form->field($model, 'message')->textarea() ?>

    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>

<?php ActiveForm::end(); ?>

এখানে আমরা ActiveForm উইজেট ব্যবহার করেছি, যা Yii ফ্রেমওয়ার্কের একটি খুব শক্তিশালী টুল, যা ফর্মকে সহজে তৈরি করতে এবং সেই ফর্মের ডেটা সাবমিট করতে সহায়তা করে।


কন্ট্রোলার তৈরি করা

এখন কন্ট্রোলারে ফর্মের ডেটা প্রসেস করার জন্য একটি অ্যাকশন তৈরি করতে হবে। এই অ্যাকশনটি ব্যবহারকারীর ইনপুট গ্রহণ করবে, ডেটা ভ্যালিডেট করবে, এবং সেভ করবে।

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\ContactForm;

class SiteController extends Controller
{
    public function actionContact()
    {
        $model = new ContactForm();

        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            // ফর্মের ডেটা সঠিকভাবে ভ্যালিডেট হয়েছে
            Yii::$app->session->setFlash('success', 'Thanks for contacting us!');
            
            // ডেটাবেসে সেভ করা (যদি প্রয়োজন হয়)
            // $model->save();

            return $this->refresh();  // ফর্ম সাফ করা এবং পেজ রিফ্রেশ করা
        }

        return $this->render('contact', [
            'model' => $model,
        ]);
    }
}
  • এখানে load() মেথড ব্যবহার করে আমরা ইউজারের ইনপুট ডেটা মডেলে লোড করেছি।
  • তারপর validate() মেথড ব্যবহার করে ডেটার ভ্যালিডেশন নিশ্চিত করেছি।
  • যদি ভ্যালিডেশন সফল হয়, তাহলে আমরা একটি ফ্ল্যাশ মেসেজ সেট করেছি এবং ফর্মের ডেটা সেভ করতে পারি (যদি ডেটাবেসে সেভ করা দরকার হয়)।
  • শেষে, refresh() ব্যবহার করে পেজটি রিফ্রেশ করা হয়, যাতে ফর্ম সাফ হয়।

ডেটা প্রসেসিং

ডেটা প্রসেসিংয়ের মধ্যে রয়েছে ইনপুট ডেটার ভ্যালিডেশন এবং সেই ডেটা প্রক্রিয়াজাত করা। Yii ফ্রেমওয়ার্কে আমরা এই কাজগুলো খুব সহজেই করতে পারি।

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

মডেল ক্লাসে rules() মেথড ব্যবহার করে আমরা ইনপুট ডেটার ভ্যালিডেশন রুলস সেট করতে পারি, যা ফর্ম সাবমিশনের সময় অটোমেটিক্যালি কার্যকর হয়।

২. ডেটা সেভ করা

আপনি যদি ডেটাকে ডাটাবেসে সেভ করতে চান, তাহলে মডেল ক্লাসে save() মেথড ব্যবহার করতে পারেন। যেমন:

if ($model->save()) {
    // সফলভাবে সেভ হয়েছে
} else {
    // সেভ করতে সমস্যা হয়েছে
}

এছাড়া, আপনি ডেটা সেভ করার আগে বা পরে কিছু কাস্টম প্রসেসিং বা হ্যান্ডলিং করতে চাইলে, মডেল ক্লাসে beforeSave() বা afterSave() মেথডও ব্যবহার করতে পারেন।


সারাংশ

Yii ফ্রেমওয়ার্কে ফর্ম সাবমিশন এবং ডেটা প্রসেসিং একটি সোজা এবং সিস্টেমেটিক প্রক্রিয়া। Yii এর ActiveForm এবং Model ক্লাসের মাধ্যমে আপনি সহজে ফর্ম তৈরি, ইনপুট ভ্যালিডেশন এবং ডেটা সেভ করতে পারেন। এই প্রক্রিয়াগুলোকে আরও উন্নত করতে, আপনি বিভিন্ন event-handling এবং custom validation ব্যবহার করতে পারেন। Yii ফ্রেমওয়ার্কের এই বৈশিষ্ট্যগুলি আপনাকে দ্রুত এবং নিরাপদভাবে ডেটা প্রসেস করতে সাহায্য করবে।

Content added By
Promotion

Are you sure to start over?

Loading...