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-তে ব্যাপকভাবে ব্যবহৃত হয় এবং এগুলো ইউজারের অভিজ্ঞতা উন্নত করতে সহায়তা করে। এসব উইজেট কাস্টমাইজ এবং কনফিগার করা সহজ, যা ডেভেলপারদের দ্রুত ওয়েব অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।