CakePHP তে Layouts এবং Elements দুইটি গুরুত্বপূর্ণ টেমপ্লেট সিস্টেম, যা অ্যাপ্লিকেশনের ইউজার ইন্টারফেসের পুনরাবৃত্তি অংশগুলো পুনঃব্যবহারযোগ্য এবং কাস্টমাইজযোগ্য করতে সাহায্য করে। এই দুটি ধারণা ব্যবহারের মাধ্যমে আপনি কোড পুনঃব্যবহার করতে পারেন এবং অ্যাপ্লিকেশনটিকে আরও সুসংগঠিত ও দ্রুত করতে পারেন।
Layouts
Layouts হলো একটি টেমপ্লেট ফাইল যা অ্যাপ্লিকেশনের পৃষ্ঠার সাধারণ কাঠামো (structure) নির্ধারণ করে। সাধারণত, এটি অ্যাপ্লিকেশনের হেডার, ফুটার, সাইডবার এবং অন্যান্য কন্টেন্ট অংশগুলোর জন্য ব্যবহৃত হয়।
Layout তৈরির জন্য প্রক্রিয়া
CakePHP তে নতুন লেআউট তৈরি করতে, আপনাকে src/Template/Layout/ ডিরেক্টরিতে একটি .ctp (CakePHP Template) ফাইল তৈরি করতে হবে। উদাহরণস্বরূপ, default.ctp নামে একটি লেআউট ফাইল তৈরি করা যায়।
src/Template/Layout/default.ctp
উদাহরণ:
<!DOCTYPE html>
<html>
<head>
<title><?php echo $this->fetch('title'); ?></title>
<?php echo $this->Html->css('style.css'); ?>
</head>
<body>
<div class="header">
<h1>আমার অ্যাপ্লিকেশন</h1>
</div>
<div class="content">
<?php echo $this->fetch('content'); ?>
</div>
<div class="footer">
<p>© 2024 আমার অ্যাপ্লিকেশন</p>
</div>
</body>
</html>
- $this->fetch('title'): পৃষ্ঠার শিরোনাম ধারণ করে।
- $this->fetch('content'): মূল কন্টেন্ট অংশ ধারণ করে। এটি আপনি আপনার কন্ট্রোলারের ভিউ থেকে প্রবাহিত করবেন।
Layout ব্যবহার করা
কোনো কন্ট্রোলারের মধ্যে একটি নির্দিষ্ট লেআউট ব্যবহার করার জন্য, আপনি কন্ট্রোলারের viewBuilder এ setLayout() মেথড ব্যবহার করতে পারেন:
public function initialize(): void
{
parent::initialize();
$this->viewBuilder()->setLayout('default');
}
এটি নিশ্চিত করবে যে এই কন্ট্রোলারের সমস্ত ভিউ default.ctp লেআউট ব্যবহার করবে।
Elements
Elements হলো ছোট, পুনঃব্যবহারযোগ্য টেমপ্লেট অংশ, যেগুলো একাধিক ভিউতে ব্যবহার করা যেতে পারে। যেমন, আপনি একটি কাস্টম হেডার, সাইডবার, অথবা ফর্ম পিস হিসেবে এলিমেন্ট ব্যবহার করতে পারেন।
Element তৈরির জন্য প্রক্রিয়া
CakePHP তে এলিমেন্ট তৈরি করতে, আপনাকে src/Template/Element/ ডিরেক্টরিতে একটি .ctp ফাইল তৈরি করতে হবে। উদাহরণস্বরূপ, একটি header.ctp এলিমেন্ট তৈরি করা যেতে পারে।
src/Template/Element/header.ctp
উদাহরণ:
<div class="header">
<h1>আমার অ্যাপ্লিকেশন হেডার</h1>
<nav>
<ul>
<li><a href="/">হোম</a></li>
<li><a href="/about">আমাদের সম্পর্কে</a></li>
<li><a href="/contact">যোগাযোগ</a></li>
</ul>
</nav>
</div>
Element ব্যবহার করা
কোনো ভিউ ফাইলে এলিমেন্ট ব্যবহার করতে, আপনি element() মেথড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি আপনার লেআউটে এলিমেন্ট header ব্যবহার করতে চান:
<?php echo $this->element('header'); ?>
এটি এলিমেন্ট ফাইলটি লোড করবে এবং সেই এলিমেন্টের কন্টেন্টটি বর্তমান ভিউতে ইনক্লুড করবে।
Layout এবং Element এর মধ্যে পার্থক্য
- Layout: এটি পুরো পৃষ্ঠার কাঠামো নির্ধারণ করে, যেমন হেডার, ফুটার, সাইডবার ইত্যাদি। সাধারণত একটি পৃষ্ঠার জন্য একটি লেআউট থাকে এবং পুরো অ্যাপ্লিকেশনজুড়ে এটি শেয়ার করা যায়।
- Element: এটি ছোট, পুনঃব্যবহারযোগ্য অংশ যা একাধিক ভিউতে ব্যবহার করা যায়, যেমন নির্দিষ্ট ব্লক বা উইজেট (যেমন হেডার, ফর্ম, সাইডবার ইত্যাদি)।
Layout এবং Element এর উন্নত ব্যবহার
Dynamic Content ইনক্লুড করা
আপনি এলিমেন্টে ডাইনামিক ডেটা পাঠাতে পারেন। উদাহরণস্বরূপ, একটি কাস্টম হেডারে ইউজারের নাম পাঠানো:
// কন্ট্রোলারে
$this->set('username', 'John Doe');
// এলিমেন্টে
<h2>স্বাগতম, <?php echo $username; ?>!</h2>
একাধিক Layout ব্যবহার
CakePHP তে আপনি ভিন্ন ভিন্ন কন্ট্রোলার বা অ্যাকশনের জন্য ভিন্ন ভিন্ন লেআউট ব্যবহার করতে পারেন:
// কন্ট্রোলারে
$this->viewBuilder()->setLayout('admin'); // Admin layout
এটি সেই কন্ট্রোলার বা অ্যাকশনে admin.ctp লেআউট ব্যবহার করবে।
CakePHP তে Layouts এবং Elements ব্যবহারের মাধ্যমে আপনি কোড পুনঃব্যবহারযোগ্য এবং সুসংগঠিত করতে পারেন। Layout একটি পূর্ণ পৃষ্ঠার কাঠামো নির্ধারণ করে, যেখানে Elements ছোট টুকরা যা একাধিক ভিউতে ব্যবহৃত হতে পারে। এই দুটি ফিচারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে আরও রিফাইন এবং ম্যানেজেবল করতে পারবেন, এবং একই সময়ে কাস্টম ইউজার ইন্টারফেস তৈরি করতে পারবেন।
Read more