Skill

উইজেটস এবং ইউআই কম্পোনেন্টস

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

215

Yii ফ্রেমওয়ার্কে উইজেটস (Widgets) এবং ইউআই কম্পোনেন্টস (UI Components) এমন শক্তিশালী উপাদান যা আপনাকে ব্যবহারকারীর ইন্টারফেস (UI) তৈরি করতে এবং অ্যাপ্লিকেশনের ইন্টারঅ্যাকটিভিটি উন্নত করতে সহায়তা করে। এগুলি বিভিন্ন প্রকারের ডায়নামিক কন্টেন্ট বা ফিচার প্রদর্শন করতে ব্যবহৃত হয়, যেমন: টেবিল, গ্রিড, ফর্ম, মেনু, পপ-আপ, এবং আরও অনেক কিছু।


১. উইজেটস (Widgets)

Yii উইজেটস হল পুনঃব্যবহারযোগ্য কোডের ব্লক যা বিভিন্ন UI উপাদান তৈরিতে ব্যবহৃত হয়। উইজেটস সাধারণত অ্যাপ্লিকেশনের ভিউ (view) ফাইলে ব্যবহৃত হয় এবং UI উপাদানগুলোকে সহজে কাস্টমাইজ ও পরিচালনা করতে সহায়তা করে। Yii ফ্রেমওয়ার্কের ডিফল্ট উইজেটস অনেক শক্তিশালী, কিন্তু আপনি চাইলে কাস্টম উইজেটও তৈরি করতে পারেন।

Yii 2 এর কিছু সাধারণ উইজেটস:

  • GridView: এটি একটি টেবিল ভিউ উইজেট যা ডেটা গ্রিড প্রদর্শন করতে ব্যবহৃত হয়।
  • ListView: ডেটার লিস্ট দেখানোর জন্য ব্যবহৃত উইজেট।
  • Menu: একটি নেভিগেশন মেনু তৈরি করার জন্য ব্যবহৃত হয়।
  • ActiveForm: ফর্ম তৈরি ও সাবমিট করার জন্য ব্যবহৃত উইজেট।
  • Pager: পেজিনেশন (pagination) ফিচার প্রদান করে।

উইজেটস ব্যবহার করার উদাহরণ:

GridView উইজেট ব্যবহার:

use yii\grid\GridView;
use yii\data\ActiveDataProvider;

$dataProvider = new ActiveDataProvider([
    'query' => \app\models\Post::find(),
    'pagination' => [
        'pageSize' => 10,
    ],
]);

echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'id',
        'title',
        'content',
        ['class' => 'yii\grid\ActionColumn'],
    ],
]);

এখানে, GridView উইজেট ডেটা প্রদর্শন করে, যা ActiveDataProvider দ্বারা সাপোর্ট করা হয়। এতে টেবিলের রো, কলাম এবং অ্যাকশন (যেমন: edit, delete) সহ অন্যান্য তথ্য দেখানো হয়।

ActiveForm উইজেট ব্যবহার:

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

$form = ActiveForm::begin();

echo $form->field($model, 'name');
echo $form->field($model, 'email');
echo Html::submitButton('Submit');

ActiveForm::end();

এখানে, ActiveForm উইজেটের মাধ্যমে একটি ফর্ম তৈরি করা হয়েছে। এটি মডেল-বাইন্ডিং এর মাধ্যমে ডেটা সহজেই প্রদর্শন ও সাবমিট করতে সহায়তা করে।


২. ইউআই কম্পোনেন্টস (UI Components)

UI Components হল Yii ফ্রেমওয়ার্কে ব্যবহৃত এমন উপাদান যা ব্যবহারের সুবিধার্থে UI কন্টেন্ট তৈরি করে। এগুলি উইজেটসের মতই, কিন্তু UI কম্পোনেন্টস বিশেষ কিছু কার্যাবলী বা ফিচার প্রদান করে। Yii 2 এবং Yii 3-এ UI কম্পোনেন্টস সাধারণত নির্দিষ্ট কাজ সম্পাদন করতে ব্যবহৃত হয়, যেমন ডায়ালগ বক্স, পপ-আপ, কারসেল ইত্যাদি।

Yii 2 এ ইউআই কম্পোনেন্টস:

  • Alert: ইউজারদের একটি সিস্টেম বার্তা প্রদর্শন করতে ব্যবহৃত।
  • Carousel: ছবি বা কনটেন্টের স্লাইড শো তৈরি করার জন্য।
  • DatePicker: তারিখ নির্বাচন করতে ব্যবহৃত উইজেট।
  • Modal: পপ-আপ মডাল উইন্ডো প্রদর্শন করে।

UI কম্পোনেন্ট ব্যবহার করার উদাহরণ:

Alert উইজেট ব্যবহার:

use yii\bootstrap4\Alert;

echo Alert::widget([
    'options' => [
        'class' => 'alert-success',
    ],
    'body' => 'This is a success message!',
]);

এখানে, Alert উইজেটটি একটি সাফল্যের বার্তা প্রদর্শন করছে। class অপশন দিয়ে আপনি বার্তার স্টাইল কাস্টমাইজ করতে পারেন (যেমন: alert-success, alert-danger ইত্যাদি)।

Carousel উইজেট ব্যবহার:

use yii\bootstrap4\Carousel;

echo Carousel::widget([
    'items' => [
        [
            'content' => '<img src="image1.jpg" alt="First image">',
            'caption' => 'First Image Caption',
        ],
        [
            'content' => '<img src="image2.jpg" alt="Second image">',
            'caption' => 'Second Image Caption',
        ],
    ],
]);

এখানে, Carousel উইজেটটি একটি স্লাইড শো তৈরি করছে, যেখানে দুটি ছবি এবং তাদের ক্যাপশন দেখানো হয়েছে।


৩. কাস্টম উইজেটস তৈরি করা

Yii ফ্রেমওয়ার্কে আপনি নিজে কাস্টম উইজেট তৈরি করতে পারেন। কাস্টম উইজেট তৈরি করার জন্য আপনাকে yii\base\Widget ক্লাসটি ইনহেরিট করতে হবে এবং সেখানে আপনার কাস্টম লজিক ও রেন্ডারিং ফাংশন সংজ্ঞায়িত করতে হবে।

কাস্টম উইজেট উদাহরণ:

namespace app\widgets;

use yii\base\Widget;

class MyWidget extends Widget
{
    public $message;

    public function init()
    {
        parent::init();
        if ($this->message === null) {
            $this->message = 'Hello, Yii!';
        }
    }

    public function run()
    {
        return $this->render('myWidget', ['message' => $this->message]);
    }
}

এখানে, MyWidget একটি কাস্টম উইজেট তৈরি করা হয়েছে, যেখানে message একটি প্যারামিটার হিসাবে দেওয়া হয় এবং এটি রেন্ডারিং ফাংশনের মাধ্যমে ভিউতে পাঠানো হয়।

ভিউ (views/myWidget.php) ফাইল:

<div class="my-widget">
    <p><?= $message ?></p>
</div>

এখন আপনি এই উইজেটটি যেকোনো ভিউ ফাইলে ব্যবহার করতে পারেন:

echo \app\widgets\MyWidget::widget(['message' => 'Custom message']);

৪. উইজেটস এবং ইউআই কম্পোনেন্টস এর পার্থক্য

বৈশিষ্ট্যউইজেটসইউআই কম্পোনেন্টস
উদ্দেশ্যপুনঃব্যবহারযোগ্য UI ব্লক তৈরি করা (যেমন টেবিল, ফর্ম, গ্রিড)।UI উপাদান যেমন পপ-আপ, মেনু, এলার্ট, ক্যারোসেল ইত্যাদি।
ব্যবহারসাধারণত ডেটা প্রদর্শন, অ্যাকশন প্রক্রিয়া বা ফর্ম সংক্রান্ত কাজ।ইন্টারঅ্যাকটিভ UI ফিচার যেমন মডাল, ক্যারোসেল, এলার্ট।
উদাহরণGridView, ListView, ActiveForm, PaginationAlert, Carousel, Modal, DatePicker
কাস্টমাইজেশনইউজার ডেটা এবং কার্যাবলী (যেমন: কলাম, ডেটা সেন্টারিং) কাস্টমাইজ করা যায়।UI উপাদানগুলোর আউটপুট এবং স্টাইল কাস্টমাইজ করা যায়।

সারাংশ

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

Content added By

Yii ফ্রেমওয়ার্কে Widgets হল পুনঃব্যবহারযোগ্য UI কম্পোনেন্ট, যা ওয়েব পেজে ডায়নামিক কন্টেন্ট রেন্ডার করার জন্য ব্যবহৃত হয়। এটি আপনাকে কোড পুনরায় ব্যবহারযোগ্য এবং কার্যকরী রাখতে সাহায্য করে। Yii ফ্রেমওয়ার্কে অনেকগুলো Built-in Widgets রয়েছে, যা সাধারণত বিভিন্ন UI উপাদান যেমন ফর্ম, টেবিল, গ্রিড, এবং ডেটা ভিউ প্রজেক্টে ব্যবহৃত হয়।

Yii ফ্রেমওয়ার্কে এই উইজেটগুলি খুব সহজে কনফিগার এবং ব্যবহার করা যায়। এই উইজেটগুলি সাধারণত HTML এবং PHP কোডের সংমিশ্রণে তৈরি হয়, যা ডেভেলপারদের কম্পোনেন্ট ভিত্তিক UI নির্মাণে সহায়তা করে।


১. Yii এর Built-in Widgets

Yii ফ্রেমওয়ার্কের কিছু জনপ্রিয় Built-in Widgets হল:

১.১. GridView Widget

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

GridView উইজেট ব্যবহার করে ডেটা রেন্ডার করার উদাহরণ:

use yii\grid\GridView;
use yii\data\ActiveDataProvider;

$dataProvider = new ActiveDataProvider([
    'query' => \app\models\Book::find(),
    'pagination' => [
        'pageSize' => 10,
    ],
]);

echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'id',
        'title',
        'author',
        [
            'class' => 'yii\grid\ActionColumn',
        ],
    ],
]);

এখানে, ActiveDataProvider ব্যবহার করে ডেটা ফেচ করা হচ্ছে এবং তারপর GridView উইজেটের মাধ্যমে তা টেবিল আকারে প্রদর্শন করা হচ্ছে।

১.২. ListView Widget

ListView উইজেট লিস্ট বা লম্বা ডেটার সেট রেন্ডার করার জন্য ব্যবহৃত হয়। এটি সাধারণত ব্লগ পোস্ট, আর্টিকেল বা অন্যান্য লম্বা ডেটা তালিকা প্রদর্শনের জন্য ব্যবহার করা হয়।

ListView উইজেটের উদাহরণ:

use yii\widgets\ListView;
use yii\data\ActiveDataProvider;

$dataProvider = new ActiveDataProvider([
    'query' => \app\models\Post::find(),
    'pagination' => [
        'pageSize' => 5,
    ],
]);

echo ListView::widget([
    'dataProvider' => $dataProvider,
    'itemView' => '_post',  // _post.php ফাইলের মাধ্যমে পোস্ট রেন্ডার হবে
]);

এখানে, _post.php ফাইলটি প্রতিটি আইটেমের জন্য ভিউ হিসেবে ব্যবহার হবে।

১.৩. DetailView Widget

DetailView উইজেট একক আইটেমের ডিটেইল বা ইনফরমেশন রেন্ডার করতে ব্যবহৃত হয়, যেমন একটি প্রোফাইল পেজ বা একটি প্রোডাক্ট ডিটেইল পেজ।

DetailView উইজেটের উদাহরণ:

use yii\widgets\DetailView;

echo DetailView::widget([
    'model' => $model,
    'attributes' => [
        'id',
        'name',
        'price',
        'description',
    ],
]);

এখানে $model হলো ডেটাবেসের একটি রেকর্ড, এবং DetailView উইজেট তার ডিটেইল প্রদর্শন করছে।

১.৪. Form Widgets

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

ActiveForm উইজেটের উদাহরণ:

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

$form = ActiveForm::begin();

echo $form->field($model, 'username');
echo $form->field($model, 'password')->passwordInput();

echo Html::submitButton('Login');

ActiveForm::end();

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

১.৫. LinkPager Widget

LinkPager উইজেট পেজিনেশন পরিচালনা করতে ব্যবহৃত হয়। এটি ডেটা বা আইটেমের মধ্যে পেজের লিঙ্ক তৈরি করে, যাতে ইউজাররা এক পেজ থেকে অন্য পেজে যেতে পারেন।

LinkPager উইজেটের উদাহরণ:

use yii\widgets\LinkPager;

echo LinkPager::widget([
    'pagination' => $pagination,
]);

এখানে, $pagination হলো পেজিনেশন ডেটা, যা পূর্বে ActiveDataProvider থেকে তৈরি করা হয়।

১.৬. Menu Widget

Menu উইজেট মেনু তৈরি করতে ব্যবহৃত হয়, যা সাধারণত ওয়েবসাইটের নেভিগেশন মেনু হিসেবে ব্যবহৃত হয়।

Menu উইজেটের উদাহরণ:

use yii\widgets\Menu;

echo Menu::widget([
    'items' => [
        ['label' => 'Home', 'url' => ['site/index']],
        ['label' => 'About', 'url' => ['site/about']],
        ['label' => 'Contact', 'url' => ['site/contact']],
    ],
]);

এখানে, Menu উইজেটটি ওয়েবসাইটের জন্য একটি সিম্পল মেনু তৈরি করবে।


২. Yii উইজেটের কাস্টমাইজেশন

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

GridView কাস্টমাইজেশনের উদাহরণ:

echo GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,  // ফিল্টারিং
    'columns' => [
        'id',
        'title',
        [
            'attribute' => 'author',
            'label' => 'Author Name',
            'filter' => ['John', 'Doe'],  // কাস্টম ফিল্টার
        ],
        ['class' => 'yii\grid\ActionColumn'],
    ],
]);

এখানে filterModel ব্যবহার করা হয়েছে, যাতে আপনি ডেটাতে ফিল্টার অ্যাপ্লাই করতে পারেন।


সারাংশ

Yii ফ্রেমওয়ার্কের Built-in Widgets আপনাকে ইউজার ইন্টারফেস তৈরি করার জন্য শক্তিশালী এবং সহজ সমাধান প্রদান করে। GridView, ListView, DetailView, ActiveForm, LinkPager এবং Menu উইজেটগুলি Yii-তে ব্যাপকভাবে ব্যবহৃত হয় এবং এগুলো ইউজারের অভিজ্ঞতা উন্নত করতে সহায়তা করে। এসব উইজেট কাস্টমাইজ এবং কনফিগার করা সহজ, যা ডেভেলপারদের দ্রুত ওয়েব অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।

Content added By

Yii ফ্রেমওয়ার্কে Widget হল এমন একটি উপাদান যা পুনরায় ব্যবহারযোগ্য UI কম্পোনেন্ট তৈরি করতে সহায়তা করে। Custom Widget তৈরি করা Yii-তে একটি অত্যন্ত কার্যকরী পদ্ধতি, যা আপনাকে একাধিক স্থানে ব্যবহার করার জন্য কাস্টম UI বা ফাংশনালিটি তৈরি করতে সাহায্য করে।

Widget সাধারণত HTML, CSS, এবং JavaScript এর সমন্বয়ে কাজ করে এবং এটি কন্ট্রোলার থেকে পাস করা ডেটা বা কনফিগারেশন সেটিংস নিয়ে ইউজার ইন্টারফেসে ডায়নামিক কন্টেন্ট প্রদর্শন করতে পারে।

এখানে Yii 2 এর মধ্যে Custom Widget তৈরি করার পুরো প্রক্রিয়া দেওয়া হলো।


১. Yii 2-তে Custom Widget তৈরি করার জন্য প্রাথমিক ধারণা

Yii 2-এ কাস্টম উইজেট তৈরি করতে হলে আপনাকে একটি কাস্টম ক্লাস তৈরি করতে হবে, যা yii\base\Widget থেকে ইনহেরিট করবে। এর মধ্যে আপনি আপনার HTML কন্টেন্ট তৈরি করবেন এবং যেকোনো ডায়নামিক ডেটা বা কনফিগ প্যারামিটার প্রক্রিয়া করবেন।

২. Custom Widget ক্লাস তৈরি করা

উদাহরণ: Simple Box Widget

এখানে একটি সিম্পল কাস্টম উইজেট তৈরি করা হচ্ছে, যা একটি div এলিমেন্ট প্রদর্শন করবে এবং তার মধ্যে কিছু কন্টেন্ট থাকবে।

  1. Widget ক্লাস তৈরি করুন:

    আপনার প্রজেক্টের components ফোল্ডারে একটি নতুন ক্লাস ফাইল তৈরি করুন। উদাহরণস্বরূপ, SimpleBoxWidget.php ফাইলটি components ফোল্ডারে রাখা যেতে পারে।

    components/SimpleBoxWidget.php

    <?php
    
    namespace app\components;
    
    use yii\base\Widget;
    
    class SimpleBoxWidget extends Widget
    {
        public $content;  // Widget-এর মধ্যে প্রদর্শনযোগ্য কন্টেন্ট
    
        public function init()
        {
            parent::init();
            if ($this->content === null) {
                $this->content = 'ডিফল্ট কন্টেন্ট'; // যদি কন্টেন্ট না দেওয়া হয় তবে ডিফল্ট কন্টেন্ট দেখাবে
            }
        }
    
        public function run()
        {
            return "<div class='simple-box'>{$this->content}</div>"; // HTML কন্টেন্ট রিটার্ন করা
        }
    }
    
    • এখানে SimpleBoxWidget ক্লাসটি yii\base\Widget থেকে ইনহেরিট করা হয়েছে।
    • content প্রপার্টি ব্যবহারকারী থেকে ডেটা গ্রহণ করতে সহায়তা করবে, যদি কিছু কন্টেন্ট না দেওয়া হয় তবে ডিফল্ট মান "ডিফল্ট কন্টেন্ট" প্রদর্শিত হবে।
    • run() মেথডের মধ্যে HTML কন্টেন্ট রিটার্ন করা হচ্ছে, যা ওয়েবপেজে প্রদর্শিত হবে।
  2. Widget স্টাইলিং (optional):

    আপনি চাইলে কাস্টম উইজেটের জন্য CSS স্টাইলও যোগ করতে পারেন। সাধারণত, এটি web/css/site.css ফাইলে যুক্ত করা হয়:

    web/css/site.css

    .simple-box {
        padding: 20px;
        border: 1px solid #ddd;
        border-radius: 5px;
        background-color: #f9f9f9;
    }
    

    এই CSS কোডটি SimpleBoxWidget কে একটি সুন্দর স্টাইল প্রদান করবে।


৩. Custom Widget ব্যবহার করা

একবার উইজেট তৈরি হয়ে গেলে, আপনি এটি যেকোনো কন্ট্রোলার বা ভিউ ফাইলে ব্যবহার করতে পারেন। Yii 2 তে কাস্টম উইজেট ব্যবহার করার জন্য আপনাকে Yii::$app->get('widgetClass') অথবা সরাসরি ক্লাসের নাম ব্যবহার করতে হবে।

উদাহরণ: Widget ব্যবহার করা

আপনি যদি এই কাস্টম উইজেটটি আপনার ভিউ ফাইলে ব্যবহার করতে চান, তবে তা খুবই সহজ। এটি একটি সাধারণ ভিউ ফাইলে অন্তর্ভুক্ত করা যেতে পারে, যেমন views/site/index.php

views/site/index.php

<?php
use app\components\SimpleBoxWidget;
?>

<h1>আমার প্রথম উইজেট</h1>

<?= SimpleBoxWidget::widget([
    'content' => 'এটি একটি কাস্টম উইজেটের কন্টেন্ট!',
]) ?>

<p>এই প্যারাগ্রাফটি সাধারণ HTML কন্টেন্ট।</p>
  • এখানে, SimpleBoxWidget::widget() কল করে উইজেটটি ব্যবহৃত হয়েছে এবং content প্যারামিটারটি পাঠানো হয়েছে।
  • এটি একটি div এলিমেন্ট হিসেবে রেন্ডার হবে, যার মধ্যে "এটি একটি কাস্টম উইজেটের কন্টেন্ট!" টেক্সট প্রদর্শিত হবে।

৪. Widget কনফিগারেশন

আপনার উইজেটের কনফিগারেশন আরও সাধারণ বা ডায়নামিক করতে আপনি উইজেটের বিভিন্ন প্রপার্টি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, উইজেটের জন্য CSS ক্লাস, বা বিভিন্ন ধরনের কন্টেন্ট পাস করা যেতে পারে।

কনফিগারেশন উদাহরণ:

<?= SimpleBoxWidget::widget([
    'content' => 'এই কাস্টম উইজেটটি স্টাইল এবং কনফিগারেশন সহ!',
    'options' => ['class' => 'my-custom-class']
]) ?>

এখানে options প্রপার্টি ব্যবহার করে আপনি কাস্টম HTML অ্যাট্রিবিউটও পাস করতে পারেন। উদাহরণস্বরূপ, আপনি class অ্যাট্রিবিউট পরিবর্তন করতে পারবেন।


৫. Widget-এ ডায়নামিক কন্টেন্ট

কাস্টম উইজেট ডায়নামিক ডেটা প্রদর্শন করতে সহায়তা করে, যা কন্ট্রোলার থেকে পাস করা যায়। যেমন:

Controller থেকে ডেটা পাস করা:

public function actionIndex()
{
    $data = 'ডায়নামিক কন্টেন্ট এখানে পাস করা হবে!';
    return $this->render('index', [
        'data' => $data,
    ]);
}

View তে Widget ব্যবহার করা:

<?= SimpleBoxWidget::widget([
    'content' => $data,
]) ?>

এখানে, কন্ট্রোলারের $data ভ্যারিয়েবলটি ভিউ ফাইলে পাস করা হচ্ছে, এবং SimpleBoxWidget এর মাধ্যমে তা প্রদর্শিত হচ্ছে।


৬. উইজেটের উন্নত কনফিগারেশন

Yii-তে আরও উন্নত কাস্টম উইজেট তৈরি করতে আপনি Yii::$app->params এবং Yii::$app->get() ফাংশন ব্যবহার করে কনফিগারেশন প্যারামিটার বা আরও ডায়নামিক ফাংশনালিটি যুক্ত করতে পারেন।


সারাংশ

Yii ফ্রেমওয়ার্কে Custom Widget তৈরি করা একটি শক্তিশালী উপায় যা UI কম্পোনেন্টগুলোর পুনঃব্যবহারযোগ্যতা এবং রিফ্যাক্টরিং সহজ করে। yii\base\Widget ক্লাস ব্যবহার করে আপনি আপনার কাস্টম উইজেট তৈরি করতে পারেন, যা HTML, CSS, এবং JavaScript কোডকে একত্রে কাজ করতে দেয়। এই উইজেটটি কন্ট্রোলার থেকে পাস করা ডেটা বা কনফিগ প্যারামিটার ব্যবহার করে ডায়নামিক কন্টেন্ট প্রদর্শন করতে পারে।

Content added By

Yii ফ্রেমওয়ার্কের একটি শক্তিশালী বৈশিষ্ট্য হলো Widgets। Widgets হলো UI উপাদান যা সাধারণত পুনঃব্যবহারযোগ্য এবং কাস্টমাইজযোগ্য। Yii ফ্রেমওয়ার্কে আপনি third-party widgets ব্যবহার করে বিভিন্ন ফিচার এবং UI উপাদান সহজে ইন্টিগ্রেট করতে পারেন। এই থার্ড-পার্টি উইজেটগুলো Yii ফ্রেমওয়ার্কের সাথে একত্রে কাজ করতে সক্ষম, এবং সেগুলোর সাহায্যে আপনি দ্রুত উন্নত কার্যকারিতা যোগ করতে পারেন।


Third-party Widgets কী?

Third-party widgets হল বাইরের ডেভেলপারদের তৈরি বা সাধারণত কমিউনিটি দ্বারা রিলিজ করা উইজেট, যা আপনাকে আপনার অ্যাপ্লিকেশনে অতিরিক্ত ফিচার এবং ফাংশনালিটি যোগ করতে সাহায্য করে। Yii ফ্রেমওয়ার্কের সাথে আপনি বিভিন্ন পাবলিক লাইব্রেরি বা প্লাগিন ব্যবহার করতে পারেন, যেমন datepicker, carousel, charting libraries, file uploaders ইত্যাদি।


Third-party Widgets ব্যবহার করার ধাপ

Yii-তে third-party widgets ব্যবহার করতে বেশ কয়েকটি ধাপ অনুসরণ করতে হয়। সাধারণত এগুলোর জন্য Composer অথবা Yii এর Gii টুল ব্যবহৃত হয়।

১. Composer দিয়ে উইজেট ইনস্টল করা

Composer ব্যবহার করে আপনি তৃতীয়-পক্ষের উইজেট ইনস্টল করতে পারেন। উদাহরণস্বরূপ, আপনি yii2-widget-datepicker উইজেট ইনস্টল করতে চাইলে নিম্নলিখিত কমান্ডটি ব্যবহার করবেন:

composer require kartik-v/yii2-widget-datepicker

এই কমান্ডটি Kartik-v এর তৈরি yii2-widget-datepicker উইজেটটি আপনার প্রোজেক্টে ইনস্টল করে দিবে।

২. উইজেট ব্যবহার করা

ইনস্টল করার পর, আপনি আপনার অ্যাপ্লিকেশন বা ভিউ ফাইলের মধ্যে সেই উইজেট ব্যবহার করতে পারেন।

উদাহরণস্বরূপ, Datepicker Widget ব্যবহার করতে:

  1. Datepicker Widget ব্যবহার করা:

    প্রথমে, আপনাকে use স্টেটমেন্ট দিয়ে উইজেটটি ইমপোর্ট করতে হবে:

    use kartik\daterange\DateRangePicker;
    

    এরপর আপনার ভিউ ফাইলে DateRangePicker উইজেটটি রেন্ডার করতে পারবেন:

    echo DateRangePicker::widget([
        'name' => 'date_range',
        'useAjax' => TRUE,
        'options' => [
            'placeholder' => 'Select date range...',
            'class' => 'form-control'
        ]
    ]);
    

    এখানে name ফিল্ডটির মাধ্যমে আপনি ডেটা সংগ্রহ করবেন, এবং options এর মাধ্যমে উইজেটটির কাস্টমাইজেশন করতে পারবেন যেমন প্লেসহোল্ডার, স্টাইল ইত্যাদি।

৩. উইজেট কনফিগারেশন

প্রতিটি উইজেটের নিজস্ব কনফিগারেশন প্যারামিটার থাকে, যেগুলোর মাধ্যমে আপনি উইজেটের ফাংশনালিটি কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, Datepicker উইজেটের বিভিন্ন কনফিগ প্যারামিটার হতে পারে:

  • startDate: ডেটপিকারটি কবে থেকে শুরু হবে।
  • endDate: ডেটপিকারটির শেষ তারিখ।
  • language: ভাষার কনফিগারেশন (যেমন en, fr ইত্যাদি)।

উদাহরণ:

echo DateRangePicker::widget([
   'name' => 'date_range',
   'startDate' => '2023-01-01',
   'endDate' => '2023-12-31',
   'language' => 'en',
   'options' => [
       'class' => 'form-control'
   ]
]);

৪. উইজেটের স্টাইলিং

অনেক থার্ড-পার্টি উইজেট কিছু স্টাইল শীট (CSS) বা স্ক্রিপ্ট (JS) সহ আসে। Yii ফ্রেমওয়ার্কে, আপনি এগুলো আপনার অ্যাপ্লিকেশনে যুক্ত করতে পারেন।

যদি Composer ব্যবহার করে উইজেট ইনস্টল করেন, তবে সাধারণত সেই উইজেটের CSS এবং JS স্বয়ংক্রিয়ভাবে যুক্ত হয়ে যায়। তবে কিছু ক্ষেত্রে আপনাকে ম্যানুয়ালি এগুলি যুক্ত করতে হতে পারে।

উদাহরণ:

use yii\web\AssetBundle;

class AppAsset extends AssetBundle
{
    public $css = [
        'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css',
        'https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css',
    ];
    public $js = [
        'https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js',
    ];
}

৫. উইজেটের ফিচার ও কাস্টমাইজেশন

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

  • কাস্টম CSS ক্লাস: উইজেটের জন্য আলাদা CSS ক্লাস নির্ধারণ করা।
  • ইনপুট ভ্যালিডেশন: কিছু উইজেট ইনপুট ভ্যালিডেশন চেক করার ফিচার দিয়ে থাকে (যেমন ডেটপিকার)।
  • ইভেন্ট হ্যান্ডলিং: উইজেটের ইভেন্ট গুলি যেমন onSelect, onChange ইত্যাদি ব্যবহার করা।

জনপ্রিয় Third-party Widgets

Yii ফ্রেমওয়ার্কে অনেক তৃতীয়-পক্ষের উইজেট রয়েছে যা বিভিন্ন কার্যকারিতা প্রদান করে। কিছু জনপ্রিয় উইজেটের উদাহরণ:

  • Kartik Yii2 Widgets: Yii 2-এ অনেক জনপ্রিয় উইজেট আছে, যেমন DatePicker, FileInput, GridView ইত্যাদি।
  • yii2-pjax: যেটি পেজ রিফ্রেশ ছাড়া AJAX রিকোয়েস্টের মাধ্যমে কন্টেন্ট লোড করতে সাহায্য করে।
  • yii2-notify: যেটি নোটিফিকেশন উইজেট, যা ইউজারের কাছে সহজে বার্তা পাঠাতে সাহায্য করে।
  • yii2-carousel: যেটি ইমেজ বা কন্টেন্টের স্লাইডশো তৈরি করতে ব্যবহৃত হয়।

সারাংশ

Yii ফ্রেমওয়ার্কে third-party widgets ব্যবহার করা সহজ এবং এটি আপনার অ্যাপ্লিকেশনকে আরও কার্যকর এবং ইন্টারেক্টিভ বানাতে সহায়তা করে। Composer দিয়ে উইজেট ইনস্টল করা, সেগুলি কনফিগার করা, এবং স্টাইল শীট/JS ফাইল যুক্ত করার মাধ্যমে আপনি সেগুলির ফিচারগুলো অ্যাপ্লিকেশনে একীভূত করতে পারেন। Third-party widgets ব্যবহার করার ফলে, আপনি দ্রুত এবং কার্যকরীভাবে নতুন ফিচার যোগ করতে পারবেন।

Content added By

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


১. Yii তে UI উইজেট ইন্টিগ্রেশন

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

১.১. GridView উইজেট

Yii তে GridView উইজেট ডেটা প্রদর্শনের জন্য ব্যবহার করা হয়। এটি একটি টেবিল আকারে ডেটা রেন্ডার করে এবং বিভিন্ন ফিচার যেমন পেজিনেশন, সার্চ, এবং ফিল্টারিং সমর্থন করে।

উদাহরণস্বরূপ, GridView উইজেট ব্যবহার করে ডেটা প্রদর্শন:

// app/views/site/index.php
use yii\grid\GridView;
use yii\data\ArrayDataProvider;

// কিছু ডেটা (মডেল বা অ্যারে থেকে আসতে পারে)
$dataProvider = new ArrayDataProvider([
    'allModels' => [
        ['id' => 1, 'name' => 'John', 'email' => 'john@example.com'],
        ['id' => 2, 'name' => 'Jane', 'email' => 'jane@example.com'],
        ['id' => 3, 'name' => 'Alex', 'email' => 'alex@example.com'],
    ],
    'sort' => [
        'attributes' => ['id', 'name', 'email'],
    ],
]);

echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'id',
        'name',
        'email',
    ],
]);

এখানে, GridView উইজেটটি ArrayDataProvider ব্যবহার করে ডেটা রেন্ডার করছে, এবং এটি ডেটাকে একটি টেবিল আকারে প্রদর্শন করছে। এই টেবিলের মধ্যে পেজিনেশন, সার্চ, এবং সোর্টিং করা যেতে পারে।

১.২. ActiveForm উইজেট

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

// app/views/site/form.php
use yii\widgets\ActiveForm;
use yii\helpers\Html;
use app\models\ContactForm;

$model = new ContactForm();

$form = ActiveForm::begin();

echo $form->field($model, 'name');
echo $form->field($model, 'email');
echo $form->field($model, 'message')->textarea();

echo Html::submitButton('Submit', ['class' => 'btn btn-primary']);

ActiveForm::end();

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


২. Yii তে UI এক্সটেনশন ইন্টিগ্রেশন

Yii ফ্রেমওয়ার্কের শক্তিশালী এক্সটেনশন সিস্টেমের মাধ্যমে আপনি অতিরিক্ত UI কম্পোনেন্ট যেমন ক্যালেন্ডার, ডায়ালগ, চার্ট, গ্রাফ ইত্যাদি সহজে যোগ করতে পারেন।

২.১. Kartik-v GridView (Advanced Grid) ব্যবহার

Yii তে Kartik-v GridView একটি অত্যন্ত জনপ্রিয় এক্সটেনশন, যা উন্নত ফিচারের জন্য ব্যবহৃত হয়। এটি আরও কাস্টমাইজড এবং বেশি ইউজার-ফ্রেন্ডলি ডেটা টেবিল তৈরি করতে সাহায্য করে।

  • প্রথমে, Composer দিয়ে Kartik-v GridView এক্সটেনশন ইনস্টল করুন:

    composer require kartik-v/yii2-grid
    
  • তারপর, GridView উইজেট ব্যবহার করুন:
use kartik\grid\GridView;
use yii\data\ArrayDataProvider;

$dataProvider = new ArrayDataProvider([
    'allModels' => [
        ['id' => 1, 'name' => 'John', 'email' => 'john@example.com'],
        ['id' => 2, 'name' => 'Jane', 'email' => 'jane@example.com'],
    ],
]);

echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'id',
        'name',
        'email',
        ['class' => 'kartik\grid\ActionColumn'],
    ],
]);

এখানে, Kartik-v GridView এর মাধ্যমে উন্নত কাস্টমাইজেশনসহ ডেটা টেবিল প্রদর্শিত হচ্ছে, যেখানে বিভিন্ন অ্যাকশন বাটনও রয়েছে।

২.২. yii2-datepicker এক্সটেনশন

yii2-datepicker এক্সটেনশনটি ডেটা পিকার উইজেট প্রদান করে, যা ইনপুট ফিল্ডে ক্যালেন্ডার ব্যবহার করে তারিখ নির্বাচন করার সুবিধা দেয়।

  • Composer দিয়ে yii2-datepicker ইনস্টল করুন:

    composer require kartik-v/yii2-widget-datepicker
    
  • তারপর, এটি ব্যবহার করুন:
use kartik\date\DatePicker;
use yii\helpers\Html;

echo DatePicker::widget([
    'name' => 'date',
    'value' => date('Y-m-d'),
    'options' => ['placeholder' => 'Select date ...'],
    'pluginOptions' => [
        'autoclose' => true,
        'format' => 'yyyy-mm-dd'
    ]
]);

এখানে, DatePicker উইজেটের মাধ্যমে ডেটা ইনপুট ফিল্ডে ক্যালেন্ডার যুক্ত করা হয়েছে, যা ব্যবহারকারীকে সহজে তারিখ নির্বাচন করতে সহায়তা করে।


৩. Yii তে JavaScript এবং CSS ব্যবহার

Yii ফ্রেমওয়ার্কে UI কম্পোনেন্টের সঙ্গে JavaScript এবং CSS ব্যবহার করা খুবই সহজ। Yii এর yii\web\AssetBundle এর মাধ্যমে আপনার স্ক্রিপ্ট এবং স্টাইলশীট ফাইলগুলোকে প্রোজেক্টে অন্তর্ভুক্ত করা যায়।

৩.১. JavaScript এবং CSS অ্যাসেট লোড করা

// app/views/layouts/main.php
use yii\web\AssetBundle;
use yii\helpers\Html;

$this->registerCssFile('@web/css/custom.css');
$this->registerJsFile('@web/js/custom.js', ['position' => \yii\web\View::POS_END]);

এখানে, registerCssFile() এবং registerJsFile() মেথড ব্যবহার করে কাস্টম CSS এবং JS ফাইল প্রজেক্টে লোড করা হচ্ছে।


সারাংশ

Yii ফ্রেমওয়ার্কে UI কম্পোনেন্ট ইন্টিগ্রেশন অত্যন্ত শক্তিশালী এবং নমনীয়। আপনি বিভিন্ন উইজেট যেমন GridView, ActiveForm, DatePicker ইত্যাদি ব্যবহার করে দ্রুত এবং ইন্টারঅ্যাকটিভ UI তৈরি করতে পারেন। এছাড়াও, Yii তে এক্সটেনশন ব্যবহার করে আরও উন্নত UI উপাদান যেমন কাস্টম গ্রিড, ডায়ালগ বক্স, ক্যালেন্ডার ইত্যাদি যুক্ত করা যায়। Yii এর UI কম্পোনেন্টগুলো অত্যন্ত কাস্টমাইজেবল, যার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনটির ইউজার ইন্টারফেস সহজেই ডিজাইন এবং কন্ট্রোল করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...