Form তৈরি এবং Data Binding

ফর্মস এবং ডেটা ভ্যালিডেশন - জী ফ্রেমওয়ার্ক (Yii Framework) - Web Development

293

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
Promotion

Are you sure to start over?

Loading...