Zend Framework (এখন Laminas) এ কন্ট্রোলার হল সেই জায়গা যেখানে অ্যাপ্লিকেশনের লজিক প্রসেস করা হয় এবং ইউজারের রিকোয়েস্টের ভিত্তিতে বিভিন্ন অ্যাকশন মেথড চালিত হয়। কন্ট্রোলারে প্রতিটি অ্যাকশন মেথড হল একটি নির্দিষ্ট রিকোয়েস্ট হ্যান্ডলিং ফাংশন, যা ইউজারের রিকোয়েস্ট অনুযায়ী কাজ করে। প্রতিটি অ্যাকশন মেথড একটি নির্দিষ্ট রাউট বা URL পাথের সাথে সংযুক্ত থাকে এবং তা রিকোয়েস্ট প্রাপ্ত হলে কার্যকরী হয়।
একটি কন্ট্রোলারে একাধিক অ্যাকশন মেথড থাকতে পারে, যেমন indexAction, createAction, updateAction, deleteAction ইত্যাদি। এই অ্যাকশন মেথডগুলির মূল কাজ হলো ইউজারের রিকোয়েস্ট অনুযায়ী ডাটা প্রসেস করা এবং সেই ডাটা ভিউতে পাঠানো।
Action মেথডের ভূমিকা
- রিকোয়েস্ট হ্যান্ডলিং: প্রতিটি অ্যাকশন মেথড ইউজারের নির্দিষ্ট রিকোয়েস্ট গ্রহণ করে। কন্ট্রোলার মেথড ইউজারের ইন্টারঅ্যাকশন অনুযায়ী কাজ করে—যেমন ডাটা দেখানো, ডাটা তৈরি বা ডাটা আপডেট করা।
- ডাটা প্রসেসিং: অ্যাকশন মেথডে ডাটা সংগ্রহ, প্রক্রিয়া, এবং তা মডেল বা ডাটাবেস থেকে ফেচ করা হয়। এর মাধ্যমে অ্যাপ্লিকেশনের লজিক কার্যকর করা হয়।
- ভিউতে ডাটা পাঠানো: অ্যাকশন মেথড একটি ViewModel অবজেক্ট রিটার্ন করে, যাতে ডাটা ভিউতে পাঠানো হয়। এটি ইউজারের ইন্টারফেসে ডাটা প্রদর্শন করতে ব্যবহৃত হয়।
- রাউটিং ও অ্যাকশন মডুলারিটি: কন্ট্রোলারের প্রতিটি অ্যাকশন একটি নির্দিষ্ট রাউট বা URL পাথের সাথে মেলে। অ্যাকশন মেথডগুলো মডুলার কোড রচনায় সহায়তা করে, যাতে একাধিক ফিচারকে আলাদা করা যায়।
Zend Framework এ Action মেথডের উদাহরণ
Zend Framework বা Laminas এ কন্ট্রোলার কিভাবে কাজ করে এবং অ্যাকশন মেথড কিভাবে রাউটেড হয় তার একটি উদাহরণ দেওয়া হলো।
কন্ট্রোলার তৈরি করা
ধরা যাক, আমরা একটি 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 addAction()
{
// নতুন পণ্য যোগ করার জন্য ফর্ম প্রদর্শন বা ডাটা প্রসেস
$message = "Add a new product here!";
// ভিউতে পাঠানোর জন্য ডাটা রিটার্ন
return new ViewModel([
'message' => $message
]);
}
public function editAction()
{
// একটি নির্দিষ্ট পণ্য আপডেট করার জন্য ডাটা প্রসেস
$id = $this->params()->fromRoute('id');
$message = "Edit the product with ID: $id";
// ভিউতে পাঠানোর জন্য ডাটা রিটার্ন
return new ViewModel([
'message' => $message,
'id' => $id
]);
}
public function deleteAction()
{
// পণ্য মুছে ফেলার জন্য লজিক
$id = $this->params()->fromRoute('id');
$message = "Product with ID $id deleted.";
// ভিউতে পাঠানোর জন্য ডাটা রিটার্ন
return new ViewModel([
'message' => $message,
'id' => $id
]);
}
}
এখানে আমরা চারটি অ্যাকশন মেথড তৈরি করেছি:
- indexAction: প্রধান পৃষ্ঠার জন্য, যেখানে "Welcome to the Product Page!" মেসেজ প্রদর্শন করা হচ্ছে।
- addAction: নতুন পণ্য যোগ করার জন্য, যেখানে একটি ফর্ম বা ইনপুট অপশন দেখানো হবে।
- editAction: একটি নির্দিষ্ট পণ্য আপডেট করার জন্য, যেখানে
idপ্যারামিটারটি রিকোয়েস্ট থেকে নেওয়া হচ্ছে। - deleteAction: একটি নির্দিষ্ট পণ্য মুছে ফেলার জন্য, যেখানে
idপ্যারামিটার দিয়ে পণ্য মুছে ফেলা হয়।
Action মেথডের মাধ্যমে ডাটা ভিউতে পাঠানো
Zend Framework এ, প্রতিটি অ্যাকশন মেথড ViewModel অবজেক্ট রিটার্ন করে, যা ভিউতে ডাটা পাঠানোর জন্য ব্যবহৃত হয়।
উদাহরণস্বরূপ, indexAction মেথডে আমরা একটি $message ডাটা তৈরি করেছি এবং তা ViewModel এর মাধ্যমে ভিউতে পাঠিয়েছি:
return new ViewModel([
'message' => $message
]);
এখন, এই ডাটা আমাদের ভিউ ফাইলে ব্যবহার করা যাবে।
রাউটিং কনফিগারেশন
এখন, এই কন্ট্রোলার এবং অ্যাকশনগুলিকে অ্যাপ্লিকেশনে রাউট করতে হবে। এটি 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',
],
],
],
'add-product' => [
'type' => 'Literal',
'options' => [
'route' => '/product/add',
'defaults' => [
'controller' => 'Product\Controller\Product',
'action' => 'add',
],
],
],
'edit-product' => [
'type' => 'Segment',
'options' => [
'route' => '/product/edit/:id',
'defaults' => [
'controller' => 'Product\Controller\Product',
'action' => 'edit',
],
'constraints' => [
'id' => '[0-9]+', // id শুধুমাত্র সংখ্যার হতে হবে
],
],
],
'delete-product' => [
'type' => 'Segment',
'options' => [
'route' => '/product/delete/:id',
'defaults' => [
'controller' => 'Product\Controller\Product',
'action' => 'delete',
],
'constraints' => [
'id' => '[0-9]+',
],
],
],
],
],
];
এখানে /product, /product/add, /product/edit/:id, এবং /product/delete/:id এর জন্য রাউটিং কনফিগার করা হয়েছে। প্রতিটি রাউট একটি নির্দিষ্ট কন্ট্রোলারের অ্যাকশন মেথডের সাথে সম্পর্কিত।
Action মেথডের ভূমিকা সারাংশ
Zend Framework বা Laminas এ Action মেথড হল কন্ট্রোলারের গুরুত্বপূর্ণ অংশ, যা ইউজারের রিকোয়েস্ট অনুযায়ী কার্যক্রম সম্পাদন করে এবং ডাটা ভিউতে রিটার্ন করে। প্রতিটি অ্যাকশন মেথড একটি নির্দিষ্ট রাউট বা URL পাথের সাথে সংযুক্ত থাকে এবং তা ডাটা প্রসেসিং, রাউটিং, এবং ভিউয়ে ডাটা পাঠানোর কাজ করে। এটি অ্যাপ্লিকেশনকে মডুলার, স্কেলেবল এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।