Phalcon Forms এর সাথে Model Binding

Form Handling এবং Validation - ফ্যালকন (Phalcon) - Web Development

249

Phalcon ফ্রেমওয়ার্কে Forms এবং Model Binding দুটি অত্যন্ত গুরুত্বপূর্ণ ফিচার। Forms ব্যবহার করে ডেভেলপাররা ইউজার ইনপুট নিতে পারেন এবং Model Binding এর মাধ্যমে সেই ইনপুটগুলো ডাটাবেসের সাথে সম্পর্কিত মডেলের মধ্যে সহজে ম্যাপ করা যায়। এটি ডেটা প্রক্রিয়াকরণ এবং ব্যবহারকারীর ইনপুট থেকে ডাটাবেসে ডেটা সংরক্ষণ প্রক্রিয়া আরও সহজ এবং নিরাপদ করে তোলে।

Phalcon ফ্রেমওয়ার্কে Model Binding হল এমন একটি প্রক্রিয়া যা ফর্মের ইনপুট ভ্যালুগুলিকে মডেল অবজেক্টে বাউন্ড করে, ফলে ডেভেলপারদের আর আলাদা করে মডেল অবজেক্টে ডেটা ম্যাপ করতে হয় না। এটি Phalcon\Form কম্পোনেন্ট ব্যবহার করে করা হয়।


Phalcon Form এর সাথে Model Binding এর ব্যবহার

Phalcon ফ্রেমওয়ার্কে Form তৈরি করতে ও Model Binding সেট করতে কিছু ধাপ অনুসরণ করতে হয়। নিচে একটি উদাহরণ দেয়া হলো যেখানে আমরা Users টেবিলের জন্য একটি ফর্ম তৈরি করব এবং তা Model Binding এর মাধ্যমে ডাটাবেসে ইনপুট সেভ করব।


1. Model তৈরি করা

প্রথমে একটি Users মডেল তৈরি করতে হবে, যা ডাটাবেস টেবিলের সাথে সম্পর্কিত হবে।

<?php

use Phalcon\Mvc\Model;

class Users extends Model
{
    public $id;
    public $name;
    public $email;

    public function initialize()
    {
        $this->setSource("users"); // Users টেবিলের নাম
    }
}

এখানে, Users মডেলটি users টেবিলের প্রতিনিধিত্ব করছে, যেখানে id, name এবং email ফিল্ড আছে।


2. Form তৈরি করা

এখন আমরা একটি ফর্ম তৈরি করব, যেখানে ইউজার তার নাম এবং ইমেল ঠিকানা ইনপুট করতে পারবে। ফর্ম তৈরি করতে Phalcon\Form এবং Phalcon\Forms\Element ব্যবহার করা হয়।

<?php

use Phalcon\Forms\Form;
use Phalcon\Forms\Element\Text;
use Phalcon\Forms\Element\Email;
use Phalcon\Forms\Element\Submit;

class UserForm extends Form
{
    public function initialize()
    {
        // Name field
        $name = new Text('name');
        $name->setLabel('Name');
        $this->add($name);

        // Email field
        $email = new Email('email');
        $email->setLabel('Email');
        $this->add($email);

        // Submit button
        $submit = new Submit('submit', ['value' => 'Create User']);
        $this->add($submit);
    }
}

এই ফর্মে দুটি ইনপুট ফিল্ড রয়েছে: name এবং email। এছাড়া একটি submit বাটনও রয়েছে।


3. Controller এ Model Binding প্রয়োগ করা

এখন, আমরা Controller এ Model Binding প্রয়োগ করব। যখন ফর্ম সাবমিট হবে, তখন ফর্মের ইনপুট ভ্যালুগুলি মডেলের সাথে বাউন্ড হবে এবং সেই ডেটাগুলিকে ডাটাবেসে সেভ করা হবে।

<?php

use Phalcon\Mvc\Controller;

class UsersController extends Controller
{
    public function newAction()
    {
        $form = new UserForm();

        if ($this->request->isPost()) {
            // Model Binding
            $user = new Users();
            if ($form->isValid($_POST)) {
                $user->assign(
                    $_POST,  // POST data
                    [
                        'name',  // Model fields
                        'email',
                    ]
                );
                if ($user->save()) {
                    echo "User created successfully!";
                } else {
                    echo "Failed to create user.";
                }
            }
        }

        $this->view->form = $form;
    }
}

এখানে, newAction মেথডে ফর্মটি তৈরি করা হয় এবং POST রিকোয়েস্ট আসলে মডেল বাউন্ড ডেটা ইনপুট হিসেবে গ্রহণ করা হয়। তারপর, assign() মেথডের মাধ্যমে ফর্মের ইনপুট ভ্যালুগুলি Users মডেলটি ব্যবহার করে ডাটাবেসে সেভ করা হয়।


4. View ফাইল তৈরি করা

এখন, আমাদের ভিউ ফাইলে ফর্মটি প্রদর্শন করা হবে। আমরা views/users/new.volt নামে একটি ভিউ ফাইল তৈরি করব।

<form method="post">
    <?= $this->tag->render(['form']) ?>
</form>

এখানে form ফর্মটি রেন্ডার করা হয়েছে যা HTML এর মাধ্যমে ইউজারকে প্রদর্শন করবে। POST পদ্ধতিতে সাবমিট হলে, এটি UsersController এর newAction মেথডে যাবে এবং মডেল বাউন্ড ডেটা সেভ করবে।


5. Model Binding এবং Form Validation

Phalcon ফ্রেমওয়ার্কে Model Binding এর মাধ্যমে ফর্ম ডেটার প্রক্রিয়াকরণ দ্রুত এবং নিরাপদ হয়। আপনি ফর্মে validation অ্যাড করতে পারেন, যেমন PresenceOf, Email এবং অন্যান্য ভ্যালিডেশন রুলস। উদাহরণস্বরূপ:

<?php

use Phalcon\Validation;
use Phalcon\Validation\Validator\Email as EmailValidator;
use Phalcon\Validation\Validator\PresenceOf;

class UserForm extends Form
{
    public function initialize()
    {
        // Name field
        $name = new Text('name');
        $name->setLabel('Name');
        $this->add($name);
        
        // Email field with validation
        $email = new Email('email');
        $email->setLabel('Email');
        $this->add($email);

        $this->addValidators([
            new PresenceOf(['field' => 'name']),
            new EmailValidator(['field' => 'email']),
        ]);
    }
}

এখানে, PresenceOf এবং EmailValidator ভ্যালিডেশন যুক্ত করা হয়েছে, যাতে ইউজারের ইনপুট সঠিক ফর্ম্যাটে থাকে।


সারাংশ

Phalcon ফ্রেমওয়ার্কে Forms এবং Model Binding এর মাধ্যমে ফর্মের ইনপুট সহজে মডেল অবজেক্টে বাউন্ড করা যায় এবং সেই ডেটাগুলিকে ডাটাবেসে সেভ করা সম্ভব হয়। এটি ডেভেলপারদের জন্য ডেটা প্রক্রিয়াকরণ এবং ইনপুট যাচাই করা আরও সহজ এবং দ্রুত করে তোলে। Phalcon\Form এবং Phalcon\Mvc\Model কম্পোনেন্টগুলোকে একত্রে ব্যবহার করে একটি শক্তিশালী ও নিরাপদ ফর্ম প্রক্রিয়াকরণ পদ্ধতি তৈরি করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...