টেমপ্লেট ইঞ্জিন এর মাধ্যমে Dynamic Content Rendering

Web Development - কোডইগনাইটার (Codeigniter) - CodeIgniter এর টেমপ্লেট ইঞ্জিন Integration |

CodeIgniter একটি MVC (Model-View-Controller) ফ্রেমওয়ার্ক, যেখানে View অংশটি সাধারণত HTML কন্টেন্ট প্রদর্শন করে। তবে, অধিক জটিল অ্যাপ্লিকেশনগুলোর জন্য, আপনি একটি টেমপ্লেট ইঞ্জিন ব্যবহার করে dynamic content rendering করতে পারেন, যা আপনার কোড এবং ভিউয়ের মধ্যে পার্থক্য স্পষ্ট করে এবং কোডের রক্ষণাবেক্ষণ সহজ করে তোলে।

CodeIgniter-এর জন্য বিভিন্ন টেমপ্লেট ইঞ্জিন উপলব্ধ, যেমন Twig, Mustache, এবং Blade (যেটি Laravel-এর জন্য ব্যবহৃত হয়)। তবে, এখানে আমরা PHP এর ভিতরে সহজ টেমপ্লেট ইঞ্জিন ব্যবহারের পদ্ধতি দেখাবো, যেখানে ডায়নামিক কনটেন্ট রেন্ডার করা হবে।


1. CodeIgniter-এ টেমপ্লেট ইঞ্জিন সেটআপ

CodeIgniter-এ টেমপ্লেট ইঞ্জিন ব্যবহার করতে, প্রথমে আপনাকে টেমপ্লেট ফাইল এবং ডেটা (যা টেমপ্লেটের ভিতরে পাঠানো হবে) তৈরি করতে হবে।

উদাহরণ: টেমপ্লেট সিস্টেম তৈরি করা

  1. Controller: একটি সাধারণ কন্ট্রোলার তৈরি করুন যা টেমপ্লেট লোড করবে এবং ডাইনামিক ডেটা পাঠাবে।
<?php

namespace App\Controllers;

use CodeIgniter\Controller;

class TemplateController extends Controller
{
    public function index()
    {
        $data = [
            'title' => 'Welcome to CodeIgniter',
            'content' => 'This is the dynamic content rendered through the template engine!',
        ];

        // 'layout' টেমপ্লেটের সাথে ডেটা পাঠানো
        echo view('layout', $data);
    }
}

এখানে, index() মেথডটি layout নামক ভিউ (টেমপ্লেট) রেন্ডার করবে এবং ডাইনামিক ডেটা পাঠাবে। এই ডেটা $title এবং $content এর মাধ্যমে টেমপ্লেটে ব্যবহৃত হবে।


2. Layout টেমপ্লেট তৈরি করা

এখানে layout.php একটি সাধারণ টেমপ্লেট, যেখানে ডাইনামিক কন্টেন্ট যোগ করা হবে।

app/Views/layout.php:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= esc($title) ?></title>
</head>
<body>
    <header>
        <h1>Header Section</h1>
        <nav>
            <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">About</a></li>
                <li><a href="#">Contact</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <h2><?= esc($content) ?></h2> <!-- Dynamic content -->
    </main>

    <footer>
        <p>Footer Section - <?= date('Y') ?></p>
    </footer>
</body>
</html>

এখানে:

  • <?= esc($title) ?>: title ভ্যালু টেমপ্লেটে সন্নিবেশিত হবে, যা কন্ট্রোলার থেকে পাঠানো হয়েছে।
  • <?= esc($content) ?>: content ভ্যালু টেমপ্লেটে সন্নিবেশিত হবে, যা কন্ট্রোলার থেকে পাঠানো হয়েছে।

3. Dynamic Content Rendering

এখন, যখন ব্যবহারকারী /templatecontroller রিকোয়েস্ট করবে, তখন তারা layout.php টেমপ্লেটের মাধ্যমে ডাইনামিক কন্টেন্ট দেখতে পাবে। টেমপ্লেট ফাইলটি একই সাথে Header, Footer, এবং Main Content প্রদর্শন করবে, যেখানে Dynamic Content content ডেটা দিয়ে রেন্ডার হবে।


4. টেমপ্লেট সিস্টেমে পার্টস ব্যবহার

CodeIgniter-এ একটি টেমপ্লেট সিস্টেমে header, footer, এবং sidebar এর মতো বিভিন্ন অংশ আলাদা আলাদা ফাইল হিসেবে ব্যবহার করা যেতে পারে, যা কোড পুনঃব্যবহারযোগ্য এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।

1. Header টেমপ্লেট

app/Views/header.php:

<header>
    <h1>Welcome to My Website</h1>
    <nav>
        <ul>
            <li><a href="#">Home</a></li>
            <li><a href="#">About</a></li>
            <li><a href="#">Contact</a></li>
        </ul>
    </nav>
</header>

2. Footer টেমপ্লেট

app/Views/footer.php:

<footer>
    <p>© <?= date('Y') ?> My Website</p>
</footer>

3. Main Content টেমপ্লেট

app/Views/content.php:

<main>
    <h2><?= esc($content) ?></h2>
</main>

4. Layout টেমপ্লেটের মধ্যে অংশগুলো একত্রিত করা

app/Views/layout.php:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= esc($title) ?></title>
</head>
<body>
    <?= view('header') ?> <!-- Header Include -->
    
    <?= view('content', $data) ?> <!-- Main Content Include -->

    <?= view('footer') ?> <!-- Footer Include -->
</body>
</html>

এখানে:

  • view('header'): Header টেমপ্লেট লোড করবে।
  • view('content', $data): Main Content টেমপ্লেট লোড করবে এবং $data প্যারামিটার (যেমন content) পাঠাবে।
  • view('footer'): Footer টেমপ্লেট লোড করবে।

5. Template Engine এবং কোড রিন্ডারিং

CodeIgniter নিজে কোনো বিল্ট-ইন টেমপ্লেট ইঞ্জিন প্রদান না করলেও, উপরের পদ্ধতিটি ব্যবহার করে আপনি সহজে টেমপ্লেট ইঞ্জিন তৈরি করতে পারেন। তবে, আপনি চাইলে তৃতীয় পক্ষের টেমপ্লেট ইঞ্জিন (যেমন Twig, Mustache, Blade) ইনস্টল এবং কনফিগার করেও ব্যবহার করতে পারেন।


6. Blade টেমপ্লেট ইঞ্জিন ব্যবহার করা (ঐচ্ছিক)

Blade টেমপ্লেট ইঞ্জিন ব্যবহার করতে চাইলে আপনাকে Composer দিয়ে Blade ইঞ্জিন লাইব্রেরি ইনস্টল করতে হবে। এটি Laravel-এর টেমপ্লেট ইঞ্জিন হলেও CodeIgniter-এ ব্যবহার করা যায়।

composer require jenssegers/blade

Blade টেমপ্লেট লোড করা:

use Jenssegers\Blade\Blade;

$blade = new Blade(APPPATH.'Views', WRITEPATH.'cache');
echo $blade->make('template')->with('data', $data);

সারাংশ

  • CodeIgniter-এ dynamic content rendering টেমপ্লেট সিস্টেম ব্যবহার করে সহজে করা যায়।
  • ভিউ ফাইলগুলো আলাদা আলাদা টেমপ্লেট অংশে ভাগ করা যায়, যেমন header, footer, এবং content
  • PHP-ভিত্তিক টেমপ্লেট ইঞ্জিন CodeIgniter-এ ডাইনামিক কন্টেন্ট রেন্ডারিং সহজ এবং কার্যকর করে তোলে।
  • Blade, Twig, এবং Mustache এর মতো তৃতীয় পক্ষের টেমপ্লেট ইঞ্জিনও CodeIgniter-এ ব্যবহার করা যায়।

এভাবে, CodeIgniter-এ টেমপ্লেট ইঞ্জিনের মাধ্যমে ডাইনামিক কন্টেন্ট রেন্ডারিং করা যায়, যা অ্যাপ্লিকেশনের কাঠামোকে পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।

Content added By
Promotion