Zend Framework (এখন Laminas) এ একটি Controller ক্লাস তৈরি করা এবং এর কনফিগারেশন সঠিকভাবে করা অ্যাপ্লিকেশনের কার্যকরী অংশ গঠন করতে অত্যন্ত গুরুত্বপূর্ণ। কন্ট্রোলার হলো অ্যাপ্লিকেশনটির লজিক্যাল সেন্টার, যেখানে ইউজারের রিকোয়েস্ট গ্রহণ করা হয়, প্রয়োজনীয় ডাটা প্রসেস করা হয় এবং সেই ডাটা ভিউতে পাঠানো হয়।
এখানে আমরা শিখব কিভাবে একটি নতুন Controller ক্লাস তৈরি করতে হয় এবং তার সাথে সংশ্লিষ্ট কনফিগারেশন সেট করতে হয়।
১. Controller ক্লাস তৈরি করা
Zend Framework এ কন্ট্রোলার ক্লাস তৈরি করতে, প্রথমে আপনাকে একটি ক্লাস তৈরি করতে হবে যা AbstractActionController থেকে ইনহেরিট করবে। এই ক্লাসে আপনি বিভিন্ন অ্যাকশন মেথড তৈরি করতে পারবেন, যেমন indexAction বা viewAction।
কন্ট্রোলার ক্লাসের স্ট্রাকচার
ধরা যাক, আমরা একটি ProductController ক্লাস তৈরি করতে যাচ্ছি, যা পণ্যের তথ্য দেখাবে।
ফোল্ডার স্ট্রাকচার:
module/Product/src/Controller/ProductController.php
ProductController.php:
<?php
namespace Product\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class ProductController extends AbstractActionController
{
public function indexAction()
{
// এখানে কোনো ডাটা প্রসেস করা হতে পারে
$message = 'Welcome to the Product Page!';
// ভিউতে ডাটা পাঠানো
return new ViewModel([
'message' => $message
]);
}
public function viewAction()
{
// একটি নির্দিষ্ট পণ্যের বিস্তারিত তথ্য দেখানোর জন্য
$productId = $this->params()->fromRoute('id', 0);
// ডাটা সংগ্রহ (এই উদাহরণে শুধুমাত্র একটি dummy ডাটা)
$product = [
'id' => $productId,
'name' => 'Product ' . $productId,
'price' => 100 + $productId
];
// ভিউ মডেল তৈরির মাধ্যমে ডাটা পাঠানো
return new ViewModel([
'product' => $product
]);
}
}
এই কন্ট্রোলারে দুটি অ্যাকশন রয়েছে:
indexAction(): সাধারণভাবে পণ্য পৃষ্ঠা বা হোম পেজে গিয়ে দেখাবে।viewAction(): একটি নির্দিষ্ট পণ্যের বিস্তারিত দেখানোর জন্য ডাটা সংগ্রহ করে।
২. কন্ট্রোলার কনফিগারেশন
কন্ট্রোলার তৈরি করার পর, তাকে অ্যাপ্লিকেশনের রাউটিং কনফিগারেশনে অন্তর্ভুক্ত করা দরকার। এর জন্য module.config.php ফাইলে কন্ট্রোলারটি রেজিস্টার করতে হবে এবং তার সাথে রাউটিং কনফিগারেশন নির্ধারণ করতে হবে।
কনফিগারেশন ফাইল
ফোল্ডার স্ট্রাকচার:
module/Product/config/module.config.php
module.config.php:
<?php
namespace Product;
return [
'controllers' => [
'invokables' => [
'Product\Controller\Product' => 'Product\Controller\ProductController',
],
],
'router' => [
'routes' => [
'product' => [
'type' => 'Literal',
'options' => [
'route' => '/product',
'defaults' => [
'controller' => 'Product\Controller\Product',
'action' => 'index',
],
],
],
'product-view' => [
'type' => 'segment',
'options' => [
'route' => '/product/view/:id',
'defaults' => [
'controller' => 'Product\Controller\Product',
'action' => 'view',
],
],
],
],
],
'view_manager' => [
'template_path_stack' => [
'product' => __DIR__ . '/../view',
],
],
];
এখানে আমরা দুটি রাউট তৈরি করেছি:
product:/productরাউটটিProductControllerএরindexActionকে কল করবে।product-view:/product/view/:idরাউটটিProductControllerএরviewActionকে কল করবে, যেখানে:idহলো পণ্যের আইডি।
এছাড়া, view_manager সেকশনে template_path_stack দিয়ে ভিউ ফাইলের লোকেশন নির্ধারণ করা হয়েছে, যাতে সঠিক ভিউটি রেন্ডার করা যায়।
৩. ভিউ ফাইল তৈরি
এখন কন্ট্রোলার থেকে যে ডাটা ভিউতে পাঠানো হচ্ছে, সেটি রেন্ডার করার জন্য একটি ভিউ ফাইল তৈরি করতে হবে। ভিউ ফাইলগুলো সাধারণত .phtml এক্সটেনশনে থাকে।
ভিউ ফাইল
ফোল্ডার স্ট্রাকচার:
module/Product/view/product/product/index.phtml
module/Product/view/product/product/view.phtml
index.phtml:
<h1><?php echo $this->escapeHtml($message); ?></h1>
এই ভিউ ফাইলে $message ভেরিয়েবলটি কন্ট্রোলার থেকে পাঠানো হচ্ছে, যা এখানে "Welcome to the Product Page!" বার্তা হিসেবে প্রদর্শিত হবে।
view.phtml:
<h1>Product Details</h1>
<ul>
<li>ID: <?php echo $this->escapeHtml($this->product['id']); ?></li>
<li>Name: <?php echo $this->escapeHtml($this->product['name']); ?></li>
<li>Price: $<?php echo $this->escapeHtml($this->product['price']); ?></li>
</ul>
এটি viewAction থেকে প্রাপ্ত পণ্য সম্পর্কিত তথ্য রেন্ডার করবে, যেমন পণ্যের আইডি, নাম এবং দাম।
৪. অ্যাপ্লিকেশন কনফিগারেশন
এখন, আমরা আমাদের তৈরি করা মডিউলটি অ্যাপ্লিকেশনের application.config.php ফাইলে রেজিস্টার করব। এই ফাইলটি অ্যাপ্লিকেশনের মূল কনফিগারেশন ফাইল হিসেবে কাজ করে।
ফোল্ডার স্ট্রাকচার:
config/application.config.php
application.config.php:
return [
'modules' => [
'Application', // প্রধান অ্যাপ্লিকেশন মডিউল
'Product', // আমাদের তৈরি করা নতুন মডিউল
],
'module_listener_options' => [
'config_glob_paths' => [
'config/autoload/{,*.}{global,local}.php',
],
],
];
এখানে Product মডিউলটি সক্রিয় করা হয়েছে।
৫. অ্যাপ্লিকেশন চালানো
এখন, আপনার অ্যাপ্লিকেশন চালু করতে হবে এবং কনফিগার করা রাউটের সাথে মেলে এমন URL-এ গিয়ে ব্রাউজারে রেন্ডার করা ডাটা দেখতে হবে।
/product-ProductControllerএরindexActionরেন্ডার হবে।/product/view/1-ProductControllerএরviewActionরেন্ডার হবে এবং পণ্যের বিস্তারিত তথ্য প্রদর্শিত হবে।
সারাংশ
Zend Framework বা Laminas এ কন্ট্রোলার ক্লাস তৈরি এবং কনফিগারেশন একটি স্টেপ-বাই-স্টেপ প্রক্রিয়া। প্রথমে একটি কন্ট্রোলার ক্লাস তৈরি করতে হয়, যা AbstractActionController থেকে ইনহেরিট হয়। তারপর, কন্ট্রোলারটির জন্য রাউটিং কনফিগারেশন করতে হয় এবং নির্দিষ্ট অ্যাকশনগুলোকে মডিউল কনফিগারেশন ফাইলে যুক্ত করতে হয়। শেষে, ভিউ ফাইল তৈরি করে কন্ট্রোলার থেকে পাঠানো ডাটা রেন্ডার করতে হয়।