Skill

ভিউস এবং টেমপ্লেটিং

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

275

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

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


১. Yii ফ্রেমওয়ার্কে ভিউ (Views)

Yii 2-এ ভিউ হলো এমন একটি উপাদান যা ইউজারকে ডিসপ্লে করার জন্য ডেটা উপস্থাপন করে। এটি কন্ট্রোলার থেকে পাঠানো ডেটাকে এক বা একাধিক ভিউ ফাইলের মাধ্যমে প্রদর্শন করে। সাধারণত PHP ফাইল হিসেবে ভিউ তৈরি করা হয়, তবে এই ফাইলগুলো HTML এবং PHP কোডের সংমিশ্রণ থাকে। Yii ফ্রেমওয়ার্কের ভিউ সিস্টেম MVC (Model-View-Controller) আর্কিটেকচারের একটি গুরুত্বপূর্ণ অংশ।

ভিউ ফাইলের ধরন

  • Index.php: সাধারণত এই ফাইলটি অ্যাপ্লিকেশনের প্রধান ভিউ হিসেবে কাজ করে।
  • Partials: Yii ফ্রেমওয়ার্কে ভিউ ফাইলের বিভিন্ন অংশ বা পার্সটিয়াল ভিউ (Partial Views) হতে পারে, যা পুনরায় ব্যবহারযোগ্য অংশের জন্য উপযোগী।
  • Layouts: ওয়েব পেজের একটি সাধারণ স্ট্রাকচার (যেমন হেডার, ফুটার, সাইডবার) তৈরি করতে লেআউট ব্যবহার করা হয়।

ভিউ তৈরির প্রক্রিয়া

  1. কন্ট্রোলার থেকে ভিউ কল করা:

    Yii ফ্রেমওয়ার্কে কন্ট্রোলার ক্লাসের মাধ্যমে ভিউ ফাইল কল করা হয়। নিচের উদাহরণে index ভিউ ফাইলটি কন্ট্রোলার থেকে কল করা হচ্ছে:

    // controllers/SiteController.php
    public function actionIndex()
    {
        return $this->render('index');
    }
    

    এখানে render('index') ফাংশনটি views/site/index.php ফাইলটি রেন্ডার করবে।

  2. ডেটা ভিউতে পাঠানো:

    আপনি কন্ট্রোলার থেকে ভিউতে ডেটা পাঠাতে পারেন, যাতে ভিউ এই ডেটা প্রদর্শন করতে পারে। এটি $data অ্যারে ব্যবহার করে করা হয়:

    public function actionIndex()
    {
        $message = "Welcome to Yii!";
        return $this->render('index', [
            'message' => $message
        ]);
    }
    

    এই ক্ষেত্রে, message ভ্যারিয়েবলটি ভিউতে পাঠানো হবে, এবং তা HTML ফাইলের মধ্যে ব্যবহার করা যাবে।


২. Yii ফ্রেমওয়ার্কে টেমপ্লেটিং

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

Yii ফ্রেমওয়ার্কে Twig এবং PHP উভয় ধরনের টেমপ্লেট ইঞ্জিন ব্যবহার করা যায়। তবে, ডিফল্টভাবে Yii 2 PHP টেমপ্লেট ইঞ্জিন ব্যবহার করে।

টেমপ্লেটিং প্রক্রিয়া

  1. PHP টেমপ্লেটিং:

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

    উদাহরণস্বরূপ:

    <!-- views/site/index.php -->
    <h1><?= $message ?></h1>
    

    এখানে, $message ভ্যারিয়েবলটি কন্ট্রোলার থেকে ভিউতে পাঠানো হয়েছে এবং তা HTML ট্যাগের মধ্যে রেন্ডার করা হচ্ছে।

  2. Twig টেমপ্লেটিং (অপশনাল):

    Yii 2 তে Twig টেমপ্লেট ইঞ্জিন ব্যবহার করার জন্য আলাদা কনফিগারেশন করা লাগে। Twig একটি আধুনিক এবং শক্তিশালী টেমপ্লেট ইঞ্জিন, যা HTML কোড এবং লজিককে একত্রিত করার জন্য সুবিধাজনক।

    Twig ব্যবহার করার জন্য প্রথমে কম্পোজার দিয়ে Twig প্যাকেজটি ইনস্টল করতে হবে:

    composer require yiisoft/twig
    

    এরপর, কনফিগারেশনে Twig ইঞ্জিন যোগ করতে হবে:

    // config/web.php
    'view' => [
        'class' => 'yii\smarty\View',
        'theme' => [
            'pathMap' => [
                '@app/views' => '@app/themes/basic'
            ],
        ],
    ],
    

    তারপর .twig এক্সটেনশনে টেমপ্লেট ফাইল ব্যবহার করতে পারবেন:

    {# views/site/index.twig #}
    <h1>{{ message }}</h1>
    

৩. লেআউট (Layouts) ব্যবহার

Yii ফ্রেমওয়ার্কে লেআউট এমন একটি টেমপ্লেট যা পুরো ওয়েব পৃষ্ঠার স্ট্রাকচার তৈরি করে (যেমন হেডার, ফুটার, সাইডবার)। এটি আপনাকে ওয়েব পৃষ্ঠার কাঠামো পুনরায় ব্যবহারযোগ্য করতে সহায়তা করে।

লেআউট তৈরি করা

  1. লেআউট ফোল্ডারে লেআউট ফাইল তৈরি করুন:

    Yii 2-এর ডিফল্ট লেআউট ফোল্ডার হল views/layouts/। এখানে সাধারণত একটি main.php লেআউট ফাইল থাকে।

    উদাহরণস্বরূপ:

    <!-- views/layouts/main.php -->
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title><?= $this->title ?></title>
    </head>
    <body>
        <header>
            <h1>My Website</h1>
        </header>
        <main>
            <?= $content ?>
        </main>
        <footer>
            <p>© 2024 My Company</p>
        </footer>
    </body>
    </html>
    

    এখানে, <?= $content ?> হল সেই জায়গা যেখানে কন্ট্রোলার থেকে রেন্ডার করা কনটেন্ট থাকবে।

  2. কন্ট্রোলার থেকে লেআউট ব্যবহার করা:

    কন্ট্রোলারে layout প্রপার্টি সেট করে কোন লেআউট ব্যবহার করা হবে তা নির্ধারণ করতে পারেন।

    // controllers/SiteController.php
    public $layout = 'main';
    

৪. পার্টিয়াল ভিউ (Partial Views)

Yii 2-এ পার্টিয়াল ভিউ এমন একটি ভিউ ফাইল যা সাধারণত বড় ভিউ ফাইলের ছোট অংশ হিসেবে ব্যবহৃত হয়। এটি কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।

পার্টিয়াল ভিউ তৈরি করা

  1. একটি ছোট ভিউ ফাইল তৈরি করুন, যেমন views/site/_header.php:

    <header>
        <h1>My Website Header</h1>
    </header>
    
  2. এই পার্টিয়াল ভিউটি ব্যবহার করতে, মূল ভিউ ফাইলে renderPartial() ফাংশন ব্যবহার করুন:

    <!-- views/site/index.php -->
    <?= $this->renderPartial('_header') ?>
    

সারাংশ

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

Content added By

Yii ফ্রেমওয়ার্কের View অংশ হল অ্যাপ্লিকেশনের ইউজার ইন্টারফেস (UI) নিয়ন্ত্রণ করার জন্য দায়ী। এই অংশে HTML, CSS, JavaScript কোডের পাশাপাশি PHP ব্যবহার করা হয়, যা ডায়নামিক কনটেন্ট প্রদর্শন করতে সহায়তা করে। Yii ফ্রেমওয়ার্কে View ফাইলগুলো সাধারণত controller থেকে ডেটা পাস করে, এবং তারপর সেই ডেটা ভিউ ফাইলে প্রদর্শিত হয়।

এই অংশে Yii ফ্রেমওয়ার্কে View ফাইল এর কাজ এবং স্ট্রাকচার বিস্তারিতভাবে আলোচনা করা হবে।


Yii ফ্রেমওয়ার্কে View ফাইলের কাজ

Yii-তে View ফাইলগুলোর মূল কাজ হল controller থেকে পাস করা ডেটা ইউজারকে দেখানো। এটি Model-View-Controller (MVC) আর্কিটেকচারের অংশ এবং এটি ইউজার ইন্টারফেস (UI) প্রদর্শন করে।

  • Controller: ডেটা গ্রহণ এবং লজিক পরিচালনা করে।
  • Model: ডেটাবেস বা অন্যান্য উৎস থেকে ডেটা ম্যানিপুলেট করে।
  • View: Controller থেকে পাস করা ডেটা ব্যবহার করে UI রেন্ডার করে।

View ফাইল সাধারণত .php এক্সটেনশনে থাকে এবং HTML এবং PHP কোড মিশ্রিত থাকে। Yii ফ্রেমওয়ার্কে ভিউ ফাইলের জন্য কিছু কনভেনশন এবং কাঠামো রয়েছে।


View ফাইলের স্ট্রাকচার

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

Yii 2 এর View ফাইল স্ট্রাকচার

Yii 2-এ views ডিরেক্টরি সাধারণত কন্ট্রোলার অনুযায়ী বিভক্ত থাকে। একটি সাধারণ স্ট্রাকচার হবে:

myapp/
├── controllers/
│   ├── SiteController.php
│   └── ProductController.php
├── views/
│   ├── site/
│   │   ├── index.php
│   │   ├── about.php
│   │   └── contact.php
│   └── product/
│       ├── index.php
│       ├── view.php
│       └── create.php
└── layouts/
    └── main.php
  1. views ডিরেক্টরি: এখানে বিভিন্ন কন্ট্রোলারের জন্য আলাদা আলাদা ফোল্ডার থাকে। যেমন site কন্ট্রোলারের জন্য site ফোল্ডার এবং product কন্ট্রোলারের জন্য product ফোল্ডার।
  2. layouts ডিরেক্টরি: এখানে প্রজেক্টের সাধারণ লেআউট ফাইলগুলো থাকে। যেমন main.php ফাইলটি সাধারণত প্রতিটি পেজের জন্য একটি সাধারণ কাঠামো (Header, Footer, Sidebar) প্রদান করে। অন্য কন্ট্রোলার বা ভিউ ফাইলগুলো এই লেআউট ফাইলটি ইনক্লুড করতে পারে।
  3. ভিউ ফাইলের নাম: কন্ট্রোলারের সাথে সম্পর্কিত পেজের ভিউ ফাইলগুলোর নাম কন্ট্রোলারের অ্যাকশন নামের সাথে সম্পর্কিত থাকে। উদাহরণস্বরূপ, SiteController এর actionIndex এর জন্য views/site/index.php ফাইলটি হবে।

Yii ফ্রেমওয়ার্কে View ফাইলের প্রধান উপাদান

  1. PHP কোড: PHP কোড ব্যবহার করে ডেটা বা ভ্যারিয়েবল ভিউ ফাইলে ডায়নামিকভাবে প্রদর্শিত হয়।

    <h1>Welcome to <?= $this->context->title ?>!</h1>
    <p>This is the home page of the website.</p>
    
  2. Yii Helper Functions: Yii ফ্রেমওয়ার্কে বিভিন্ন হেল্পার ফাংশন ব্যবহৃত হয় যেগুলি ভিউ ফাইলে সহজেই ডেটা প্রদর্শন করতে সাহায্য করে। যেমন:
    • Html::a() – লিঙ্ক তৈরির জন্য
    • Html::img() – ছবি প্রদর্শন করার জন্য
    • Yii::$app->urlManager->createUrl() – ইউআরএল ক্রিয়েট করার জন্য
  3. Yii এর রেন্ডার ফাংশন: কন্ট্রোলার থেকে ডেটা ভিউ ফাইলে পাঠানোর জন্য render() অথবা renderPartial() ফাংশন ব্যবহার করা হয়।

    return $this->render('index', ['message' => 'Hello World!']);
    

Yii ফ্রেমওয়ার্কে Layout ব্যবহারের ধারণা

Yii ফ্রেমওয়ার্কে layout ব্যবহার করা হয় যাতে প্রজেক্টের ইউজার ইন্টারফেসের কাঠামো একভাবে সাজানো থাকে। Layout ফাইলটি সাধারণত views/layouts ডিরেক্টরিতে থাকে এবং এটি প্রতিটি পেজের জন্য হেডার, ফুটার এবং অন্যান্য কমন এলিমেন্ট অন্তর্ভুক্ত করে।

  • main.php: এটি সাধারণত অ্যাপ্লিকেশনের প্রধান লেআউট ফাইল, যেখানে পুরো পেজের কাঠামো থাকে। অন্যান্য ভিউ ফাইলগুলো এই লেআউট ব্যবহার করে।

    <html>
    <head>
        <title><?= $this->title ?></title>
    </head>
    <body>
        <header>
            <!-- Header Content -->
        </header>
        <div class="content">
            <?= $content ?>
        </div>
        <footer>
            <!-- Footer Content -->
        </footer>
    </body>
    </html>
    
  • $content: ভিউ ফাইলটি এখানে রেন্ডার করা হয়, যা কন্ট্রোলারের মাধ্যমে পাঠানো হয়। ভিউ ফাইলটি লেআউটের মধ্যে এই $content ভেরিয়েবলের মাধ্যমে প্রদর্শিত হয়।

Yii ফ্রেমওয়ার্কে Partials এবং Rendering

Yii 2 তে, যদি আপনি কোনও নির্দিষ্ট অংশ বা টেমপ্লেট আলাদাভাবে রেন্ডার করতে চান, তাহলে Partial Views ব্যবহার করা হয়। এটি একটি নির্দিষ্ট ভিউ ফাইলের অংশ বা টুকরা রেন্ডার করতে সাহায্য করে।

Partial View ব্যবহার:

<?= $this->renderPartial('_form', ['model' => $model]) ?>

এতে _form.php ভিউটি রেন্ডার হবে, এবং এর মধ্যে মডেল ডেটা পাস করা হবে।


Yii 3 এর View ফাইল স্ট্রাকচার

Yii 3 এখনও উন্নয়ন পর্যায়ে রয়েছে, তবে এটি Yii 2 থেকে অনেকটা আলাদা স্ট্রাকচার ব্যবহার করে। Yii 3-এ module ভিত্তিক স্ট্রাকচার ব্যবহৃত হয় এবং ভিউ ফাইলগুলোর মধ্যে আরও মডিউলার সংগঠন থাকে।

সারাংশ

Yii ফ্রেমওয়ার্কের View ফাইলগুলি Controller থেকে ডেটা গ্রহণ করে এবং তা ইউজার ইন্টারফেসে প্রদর্শন করে। Yii-তে ভিউ ফাইলগুলি কন্ট্রোলার অনুযায়ী ফোল্ডারে থাকে এবং সাধারণত .php এক্সটেনশনে থাকে। এই ভিউ ফাইলগুলি HTML, CSS, JavaScript এবং PHP কোডের সমন্বয়ে তৈরি হয়। Layout ফাইলের মাধ্যমে প্রতিটি পেজের কাঠামো নির্ধারণ করা হয়, এবং Partial Views ব্যবহার করে বিভিন্ন টুকরা রেন্ডার করা যায়।

Content added By

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


Layouts কী?

Layouts একটি প্রজেক্টের জন্য সাধারণ রূপরেখা বা শৈলী (Structure or Template) প্রদান করে। এটি মূলত একটি মাস্টার পেজ (Master Page) হিসেবে কাজ করে, যেখানে সাধারণ উপাদানগুলো যেমন হেডার, ফুটার, ন্যাভিগেশন বার ইত্যাদি একটি স্থানে রাখা হয় এবং বিভিন্ন পেজে এই উপাদানগুলো পুনরায় ব্যবহার করা যায়।

Yii তে Layout কিভাবে কাজ করে?

Yii-তে Layout একটি সাধারণ ভিউ ফাইল যা অন্যান্য ভিউগুলোর মধ্যে রেন্ডারিং করবে। এটি সাধারণত views/layouts ডিরেক্টরিতে সংরক্ষিত হয় এবং সমস্ত পেজের জন্য একটি সাধারণ শৈলী প্রদান করে।

Layout এর উদাহরণ:

  1. মুল Layout ফাইল তৈরি:

    views/layouts/main.php ফাইলটি সাধারণত একসাথে সব পেজের জন্য ব্যবহার হয়। উদাহরণস্বরূপ:

    <?php
    use yii\helpers\Html;
    use yii\widgets\Breadcrumbs;
    use yii\bootstrap\Nav;
    use yii\bootstrap\NavBar;
    use app\assets\AppAsset;
    
    AppAsset::register($this);
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title><?= Html::encode($this->title) ?></title>
        <?= Html::csrfMetaTags() ?>
        <?php $this->head() ?>
    </head>
    <body>
        <?php $this->beginBody() ?>
    
        <div class="wrap">
            <?php
            NavBar::begin([
                'brandLabel' => 'My Yii Application',
                'brandUrl' => Yii::$app->homeUrl,
                'options' => [
                    'class' => 'navbar-inverse navbar-fixed-top',
                ],
            ]);
            echo Nav::widget([
                'options' => ['class' => 'navbar-nav navbar-right'],
                'items' => [
                    ['label' => 'Home', 'url' => ['/site/index']],
                    ['label' => 'About', 'url' => ['/site/about']],
                    ['label' => 'Contact', 'url' => ['/site/contact']],
                ],
            ]);
            NavBar::end();
            ?>
    
            <div class="container">
                <?= Breadcrumbs::widget([
                    'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
                ]) ?>
                <?= $content ?>
            </div>
        </div>
    
        <footer class="footer">
            <div class="container">
                <p class="pull-left">© My Company <?= date('Y') ?></p>
            </div>
        </footer>
    
        <?php $this->endBody() ?>
    </body>
    </html>
    

    এখানে <?= $content ?> অংশে সেই পেজের মূল কন্টেন্ট রেন্ডার হবে যা এই Layout ব্যবহার করছে।

  2. Layout সেট করা:

    আপনি যেকোনো কন্ট্রোলার বা অ্যাকশন থেকে layout সেট করতে পারেন। উদাহরণস্বরূপ:

    public function actions()
    {
        $this->layout = 'main';  // এখানে 'main' layout সেট করা হয়েছে
    }
    

    সাধারণভাবে, Yii অ্যাপ্লিকেশনে সমস্ত কন্ট্রোলার main Layout ব্যবহার করবে যদি না আপনি বিশেষভাবে অন্য কিছু সেট করেন।


Partial Views কী?

Partial Views একটি অংশবিশেষ ভিউ ফাইল যা মূল ভিউ বা লেআউটের মধ্যে অন্তর্ভুক্ত করা হয়। এগুলি সাধারণত পুনরাবৃত্ত উপাদান যেমন ফর্ম, গ্রিড, বা কোনও সাধারণ কম্পোনেন্টের জন্য ব্যবহৃত হয়। Partial views ব্যবহার করে কোড পুনঃব্যবহারযোগ্য এবং মেইনটেনেবল করা যায়।

Yii তে Partial View কিভাবে কাজ করে?

Yii-তে Partial View সাধারণত ছোট ছোট ব্লক বা উপাদান থাকে যা অন্য ভিউ ফাইলে ইনক্লুড করা হয়।

Partial View এর উদাহরণ:

  1. Partial View ফাইল তৈরি:

    ধরুন, আপনি একটি পেইজে বার্তা (message) দেখাতে চান। আপনি একটি Partial View তৈরি করতে পারেন:

    views/site/_message.php:

    <div class="alert alert-info">
        <?= $message ?>
    </div>
    

    এখানে $message হলো একটি ভ্যারিয়েবল যা মূল ভিউ থেকে পাস করা হবে।

  2. Partial View কল করা:

    এবার আপনি এই Partial View কে অন্য ভিউ ফাইলে ইনক্লুড করতে পারেন:

    views/site/index.php:

    <?php
    echo $this->render('_message', ['message' => 'Welcome to the site!']);
    ?>
    

    এখানে _message Partial View টি views/site/_message.php ফাইল থেকে রেন্ডার হবে এবং message ভ্যারিয়েবলটি সেখানে পাস করা হবে।


Layout এবং Partial Views এর মধ্যে পার্থক্য

  • Layout:
    • একটি সাধারণ শিরোনাম, ফুটার, নেভিগেশন ইত্যাদি নিয়ে তৈরি হয়।
    • পুরো পেজের জন্য একটি কাঠামো নির্ধারণ করে, এবং অন্য ভিউগুলো এই কাঠামোর মধ্যে রেন্ডার হয়।
    • সাধারণত একটি প্রোজেক্টের জন্য একটি বা দুটি Layout থাকে।
  • Partial View:
    • একটি ভিউ উপাদান যা ছোট অংশ হিসেবে ব্যবহার হয়।
    • কোডের পুনঃব্যবহারযোগ্য অংশ হিসেবে কাজ করে, এবং অন্য ভিউ ফাইলের মধ্যে ইনক্লুড করা যায়।

সারাংশ

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

Content added By

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


কন্ট্রোলার থেকে ভিউতে ডেটা পাস করার প্রক্রিয়া

১. সাধারণ ডেটা পাস করা

কন্ট্রোলার থেকে ভিউতে ডেটা পাস করার জন্য render() মেথড ব্যবহার করা হয়। এই মেথডে প্রথম আর্গুমেন্ট হিসেবে ভিউ ফাইলের নাম এবং দ্বিতীয় আর্গুমেন্ট হিসেবে অ্যারে আকারে ডেটা পাঠানো হয়।

উদাহরণস্বরূপ:

// app/controllers/SiteController.php
namespace app\controllers;

use Yii;
use yii\web\Controller;

class SiteController extends Controller
{
    public function actionIndex()
    {
        $message = 'Welcome to Yii Framework!';
        return $this->render('index', [
            'message' => $message
        ]);
    }
}

এখানে, actionIndex() মেথডে $message ভেরিয়েবলটি ভিউতে পাস করা হচ্ছে। এই ডেটা অ্যারে আকারে render() মেথডে পাঠানো হচ্ছে, যার মধ্যে 'message' => $message

২. ভিউতে ডেটা গ্রহণ করা

কন্ট্রোলার থেকে পাস করা ডেটা ভিউতে গ্রহণ করতে, ভিউ ফাইলে সেই ভেরিয়েবলের নাম ব্যবহার করা হয়।

// app/views/site/index.php
<?php
/* @var $this yii\web\View */
/* @var $message string */

echo $message;  // এটি কন্ট্রোলার থেকে পাস করা ডেটা প্রদর্শন করবে
?>

এখানে, message ভেরিয়েবলটি কন্ট্রোলার থেকে ভিউতে পাঠানো হয়েছিল, এবং ভিউতে আমরা সেটি echo দিয়ে প্রদর্শন করেছি।


৩. মডেল থেকে ডেটা ভিউতে পাস করা

মডেল থেকে ডেটা সংগ্রহ করে সেটি ভিউতে পাস করা যায়। উদাহরণস্বরূপ, একটি মডেল থেকে ডেটাবেসের তথ্য সংগ্রহ করে সেটি ভিউতে পাঠানো।

// app/controllers/SiteController.php
namespace app\controllers;

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

class SiteController extends Controller
{
    public function actionIndex()
    {
        $articles = Article::find()->all();  // ডেটাবেস থেকে আর্টিকেলস সংগ্রহ
        return $this->render('index', [
            'articles' => $articles  // মডেল থেকে ডেটা ভিউতে পাঠানো
        ]);
    }
}

এখানে, Article মডেল থেকে সব আর্টিকেল ডেটা find()->all() দিয়ে সংগ্রহ করা হচ্ছে এবং render() মেথডে ভিউতে পাঠানো হচ্ছে।

ভিউতে মডেল ডেটা প্রদর্শন

// app/views/site/index.php
<?php
/* @var $this yii\web\View */
/* @var $articles app\models\Article[] */

foreach ($articles as $article) {
    echo '<h2>' . $article->title . '</h2>';
    echo '<p>' . $article->content . '</p>';
}
?>

এখানে, articles ভেরিয়েবলটি মডেল থেকে পাঠানো হয়েছিল এবং foreach লুপ ব্যবহার করে প্রতিটি আর্টিকেল প্রদর্শন করা হচ্ছে।


৪. ফ্ল্যাশ মেসেজ ভিউতে পাস করা

Yii ফ্রেমওয়ার্কে, কন্ট্রোলার থেকে ভিউতে ফ্ল্যাশ মেসেজ পাস করা যায় যা ব্যবহারকারীর জন্য সতর্কতা বা তথ্য মেসেজ হিসেবে প্রদর্শিত হয়।

// app/controllers/SiteController.php
namespace app\controllers;

use Yii;
use yii\web\Controller;

class SiteController extends Controller
{
    public function actionIndex()
    {
        Yii::$app->session->setFlash('success', 'You have successfully logged in.');
        return $this->render('index');
    }
}

এখানে, ফ্ল্যাশ মেসেজে success টাইপের একটি মেসেজ সেট করা হয়েছে।

ভিউতে ফ্ল্যাশ মেসেজ প্রদর্শন

// app/views/site/index.php
<?php
/* @var $this yii\web\View */

if (Yii::$app->session->hasFlash('success')) {
    echo Yii::$app->session->getFlash('success');
}
?>

এখানে, ফ্ল্যাশ মেসেজটি চেক করা হচ্ছে এবং যদি সেটি থাকে, তবে তা প্রদর্শন করা হচ্ছে।


৫. কমপ্লেক্স ডেটা পাস করা (অ্যারে বা অবজেক্ট)

কোনও জটিল ডেটা যেমন অ্যারে বা অবজেক্টও ভিউতে পাস করা যেতে পারে।

// app/controllers/SiteController.php
namespace app\controllers;

use Yii;
use yii\web\Controller;

class SiteController extends Controller
{
    public function actionIndex()
    {
        $userInfo = [
            'name' => 'John Doe',
            'email' => 'john.doe@example.com'
        ];
        return $this->render('index', [
            'userInfo' => $userInfo
        ]);
    }
}

ভিউতে অ্যারে বা অবজেক্টের ডেটা প্রদর্শন

// app/views/site/index.php
<?php
/* @var $this yii\web\View */
/* @var $userInfo array */

echo 'Name: ' . $userInfo['name'] . '<br>';
echo 'Email: ' . $userInfo['email'];
?>

এখানে, userInfo অ্যারে ভিউতে পাস করা হয়েছে এবং আমরা তার ভ্যালু গুলো প্রদর্শন করছি।


সারাংশ

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

Content added By

Yii ফ্রেমওয়ার্কের টেমপ্লেটিং সিস্টেম ব্যবহারকারীর ইন্টারফেস তৈরি করার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে। Yii ফ্রেমওয়ার্ক মূলত PHP টেমপ্লেটিং সিস্টেম ব্যবহার করে, তবে আপনি চাইলে Twig বা Smarty এর মতো অন্যান্য টেমপ্লেট ইঞ্জিনও ব্যবহার করতে পারেন। এখানে Yii ফ্রেমওয়ার্কের টেমপ্লেটিং সিস্টেমের তিনটি জনপ্রিয় পদ্ধতি (PHP, Twig, Smarty) বিস্তারিতভাবে আলোচনা করা হলো।


১. Yii এর ডিফল্ট PHP টেমপ্লেটিং সিস্টেম

Yii ফ্রেমওয়ার্কের ডিফল্ট টেমপ্লেট ইঞ্জিন PHP। এর মাধ্যমে HTML এবং PHP কোড একত্রিত করে ইউজার ইন্টারফেস তৈরি করা হয়।

PHP টেমপ্লেট ব্যবহারের বৈশিষ্ট্য:

  • সরাসরি PHP কোড ব্যবহার: Yii এর ডিফল্ট টেমপ্লেট সিস্টেমে HTML ফাইলে সরাসরি PHP কোড ব্যবহার করা যায়।
  • এক্সপ্রেশন সন্নিবেশ: PHP কনস্ট্রাক্ট (যেমন <?= $variable ?>) ব্যবহার করে ভেরিয়েবলগুলো টেমপ্লেটে সন্নিবেশিত করা যায়।
  • সহজ এবং পরিচিত: PHP ডেভেলপারদের জন্য এটি সহজ এবং পরিচিত, কারণ অধিকাংশ PHP ডেভেলপার PHP টেমপ্লেটিং সিস্টেম ব্যবহার করে।

উদাহরণ:

<h1>স্বাগতম, <?= $user->name ?>!</h1>
<p>আপনার ইমেইল: <?= $user->email ?></p>

এখানে, $user একটি PHP অবজেক্ট, এবং $user->name এবং $user->email ব্যবহার করে টেমপ্লেটে ডেটা সন্নিবেশিত করা হয়েছে।


২. Twig টেমপ্লেটিং সিস্টেম

Twig হলো একটি জনপ্রিয় এবং শক্তিশালী টেমপ্লেট ইঞ্জিন, যা PHP-এর জন্য ডিজাইন করা হয়েছে। Yii 2 ফ্রেমওয়ার্কে Twig সমর্থিত, এবং এটি ব্যবহারকারীর জন্য আরো পরিষ্কার, নিরাপদ এবং দ্রুত টেমপ্লেটিং সিস্টেম প্রদান করে।

Twig এর বৈশিষ্ট্য:

  • সিনট্যাক্স: Twig এর সিনট্যাক্স PHP থেকে আলাদা, যা আরো পরিষ্কার এবং ব্যবহারে সহজ। এটি ব্লক, লুপ, শর্ত ব্যবহার করে টেমপ্লেট নির্মাণকে আরও শক্তিশালী করে।
  • নিরাপত্তা: Twig XSS আক্রমণ থেকে সুরক্ষা নিশ্চিত করে, কারণ এটি ডিফল্টভাবে আউটপুটের সমস্ত ডেটা স্যানিটাইজ করে।
  • প্রোফাইলিং এবং কাস্টমাইজেশন: Twig প্রোফাইলিং এবং কাস্টম ফিল্টার তৈরি করার সুবিধা প্রদান করে, যা ডেভেলপারদের জন্য আরও শক্তিশালী টেমপ্লেট কাস্টমাইজেশন নিশ্চিত করে।

Twig ব্যবহার করার জন্য:

  1. Twig ইনস্টল করা: Yii 2-তে Twig ব্যবহার করতে Composer ব্যবহার করে এটি ইনস্টল করতে হবে:

    composer require yiisoft/yii2-twig
    
  2. কনফিগারেশন পরিবর্তন: config/web.php ফাইলে টেমপ্লেট পদ্ধতি Twig-এ পরিবর্তন করতে হবে।

    'view' => [
        'class' => 'yii\web\View',
        'renderers' => [
            'twig' => [
                'class' => 'yii\twig\ViewRenderer',
            ],
        ],
    ],
    
  3. Twig টেমপ্লেট ব্যবহার:
    • views/site/index.twig নামে একটি Twig টেমপ্লেট তৈরি করুন:

      <h1>স্বাগতম, {{ user.name }}!</h1>
      <p>আপনার ইমেইল: {{ user.email }}</p>
      

৩. Smarty টেমপ্লেটিং সিস্টেম

Smarty একটি পুরনো এবং জনপ্রিয় টেমপ্লেট ইঞ্জিন যা PHP-এ ব্যবহৃত হয়। Yii 2-তে Smarty ব্যবহার করা সম্ভব, তবে এটি Yii 2-এর ডিফল্ট টেমপ্লেট সিস্টেম নয়। Smarty ব্যবহারের জন্য আপনাকে পৃথকভাবে এটি ইনস্টল এবং কনফিগার করতে হবে।

Smarty এর বৈশিষ্ট্য:

  • ব্লক ভিত্তিক টেমপ্লেট: Smarty ব্লক ভিত্তিক টেমপ্লেট ব্যবস্থাপনা পদ্ধতি ব্যবহার করে, যা টেমপ্লেট কাস্টমাইজেশন এবং পুনঃব্যবহারের জন্য সুবিধাজনক।
  • কাস্টম ফিল্টার এবং প্লাগইন: Smarty কাস্টম ফিল্টার এবং প্লাগইন তৈরি করার জন্য বিস্তৃত সমর্থন প্রদান করে।
  • PHP কোড থেকে আলাদা: Smarty HTML এবং PHP কোডকে একত্রিত না করে আলাদা করে, যা টেমপ্লেটের পাঠযোগ্যতা এবং নিরাপত্তা বাড়ায়।

Smarty ব্যবহার করার জন্য:

  1. Smarty ইনস্টল করা: Composer দিয়ে Smarty ইনস্টল করুন:

    composer require smarty/smarty
    
  2. Smarty কনফিগারেশন: config/web.php ফাইলে Smarty কনফিগার করুন।

    'view' => [
        'class' => 'yii\smarty\View',
        'smarty' => [
            'class' => 'Smarty',
        ],
    ],
    
  3. Smarty টেমপ্লেট তৈরি:
    • views/site/index.tpl নামে একটি Smarty টেমপ্লেট তৈরি করুন:

      <h1>স্বাগতম, {$user.name}!</h1>
      <p>আপনার ইমেইল: {$user.email}</p>
      

সারাংশ

Yii ফ্রেমওয়ার্কে টেমপ্লেটিং সিস্টেম ব্যবহার করার জন্য তিনটি প্রধান পদ্ধতি রয়েছে: PHP, Twig, এবং Smarty

  • PHP টেমপ্লেট Yii-এর ডিফল্ট টেমপ্লেট সিস্টেম এবং এটি সহজ এবং পরিচিত।
  • Twig একটি শক্তিশালী এবং নিরাপদ টেমপ্লেট ইঞ্জিন, যা Yii 2-এ খুব জনপ্রিয় এবং আরও ভালো নিরাপত্তা এবং প্রোফাইলিং প্রদান করে।
  • Smarty একটি পুরনো, তবে শক্তিশালী টেমপ্লেট ইঞ্জিন যা আলাদা ব্লক ভিত্তিক কাঠামো এবং কাস্টম ফিল্টারের সুবিধা প্রদান করে।

আপনার প্রজেক্টের চাহিদার ওপর ভিত্তি করে, আপনি Yii 2 বা Yii 3-এর টেমপ্লেটিং সিস্টেমে যেকোনো একটি নির্বাচন করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...