Zend Framework বা Laminas এ রাউটিং একটি গুরুত্বপূর্ণ অংশ, যা ইউজারের রিকোয়েস্ট অনুযায়ী কন্ট্রোলার এবং অ্যাকশন মেথডে রিডাইরেক্ট করে। রাউটিং মূলত URL প্যাটার্ন অনুযায়ী কন্ট্রোলার এবং অ্যাকশনকে নির্ধারণ করে, যার মাধ্যমে ইউজার যেকোনো রিকোয়েস্টে সঠিক কন্ট্রোলার ও অ্যাকশন এক্সিকিউট হতে পারে।
Zend Framework এ রাউটিং কনফিগারেশন router সেকশনে করা হয়, যা module.config.php ফাইলে থাকে। এখানে আপনি বিভিন্ন রাউট প্যাটার্ন এবং কন্ট্রোলার অ্যাকশনের মধ্যে সম্পর্ক তৈরি করতে পারেন।
রাউটিং কনফিগারেশন
Zend Framework বা Laminas এ রাউট কনফিগারেশনটি সাধারণত মডিউল কনফিগারেশন ফাইলে (module.config.php) করা হয়। এই কনফিগারেশনটিতে রাউটের URL প্যাটার্ন এবং সংশ্লিষ্ট কন্ট্রোলার ও অ্যাকশন ম্যাপিং করা হয়।
১. রাউটিং কনফিগারেশন ফাইল
মডিউল কনফিগারেশনে আপনি একাধিক রাউট কনফিগার করতে পারেন। একটি রাউট সাধারণত একটি URL প্যাটার্ন এবং একটি কন্ট্রোলার অ্যাকশন নির্দেশ করে।
module.config.php ফাইলের রাউটিং কনফিগারেশন:
namespace Product;
return [
'controllers' => [
'invokables' => [
'Product\Controller\Product' => 'Product\Controller\ProductController',
],
],
'router' => [
'routes' => [
'product' => [
'type' => 'Literal', // রাউটের ধরন (Literal, Segment, etc.)
'options' => [
'route' => '/product', // URL প্যাটার্ন
'defaults' => [
'controller' => 'Product\Controller\Product', // কন্ট্রোলার
'action' => 'index', // ডিফল্ট অ্যাকশন
],
],
],
'product-detail' => [
'type' => 'Segment', // রাউটের ধরন (Segment ব্যবহার করলে ডাইনামিক প্যারামিটার হয়)
'options' => [
'route' => '/product/:id', // URL প্যাটার্নে :id প্যারামিটার
'defaults' => [
'controller' => 'Product\Controller\Product', // কন্ট্রোলার
'action' => 'view', // অ্যাকশন
],
'constraints' => [
'id' => '[0-9]+', // id এর মান অবশ্যই সংখ্যা হতে হবে
],
],
],
],
],
];
এখানে দুটি রাউট কনফিগার করা হয়েছে:
/product— এই রাউটটি/productURL এ কন্ট্রোলারProductControllerএবং অ্যাকশনindexActionকে নির্দেশ করে। এটি Literal রাউট টাইপ ব্যবহার করছে, অর্থাৎ URL প্যাটার্নটি স্ট্যাটিক (অপরিবর্তনীয়)।/product/:id— এই রাউটটি Segment রাউট টাইপ ব্যবহার করছে। এখানে:idএকটি ডাইনামিক প্যারামিটার (পথ প্যারামিটার) হিসেবে কাজ করছে। এই রাউটটিidপ্যারামিটারকে কন্ট্রোলারে পাঠাবে এবং কন্ট্রোলারটি সেই প্যারামিটার ব্যবহার করে সংশ্লিষ্ট পণ্য প্রদর্শন করবে।
২. Controller এবং Action এর সাথে ম্যাপিং
যখন ইউজার একটি URL রিকোয়েস্ট পাঠায়, Zend Framework সেই রিকোয়েস্টের সাথে সঙ্গতিপূর্ণ কন্ট্রোলার এবং অ্যাকশনকে রাউটিং কনফিগারেশন অনুযায়ী কল করবে।
কন্ট্রোলার
কন্ট্রোলার হলো অ্যাপ্লিকেশনের লজিক্যাল অংশ যা রিকোয়েস্ট প্রসেস করে এবং ভিউতে ডাটা পাঠায়। কন্ট্রোলার ক্লাসটি সাধারণত AbstractActionController থেকে ইনহেরিট করে।
ProductController.php:
namespace Product\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class ProductController extends AbstractActionController
{
public function indexAction()
{
// indexAction দ্বারা প্রদর্শিত হবে
return new ViewModel([
'message' => 'Welcome to the Product Listing Page!'
]);
}
public function viewAction()
{
// viewAction দ্বারা একটি নির্দিষ্ট পণ্য প্রদর্শিত হবে
$id = $this->params()->fromRoute('id', 0); // :id প্যারামিটার থেকে ডাটা নেয়
return new ViewModel([
'id' => $id,
'message' => 'Details of Product ID ' . $id
]);
}
}
এখানে, দুটি অ্যাকশন রয়েছে:
indexAction()— এটি/productরিকোয়েস্টে ট্রিগার হয় এবং একটি সাধারণ মেসেজ প্রদর্শন করে।viewAction()— এটি/product/:idরিকোয়েস্টে ট্রিগার হয় এবংidপ্যারামিটার থেকে পণ্য সম্পর্কিত তথ্য দেখায়।
অ্যাকশন
indexAction() এবং viewAction() হল অ্যাকশন মেথড। কন্ট্রোলার অ্যাকশন URL এর প্যারামিটার অনুযায়ী ডিফাইন করা হয়।
viewAction() মেথডে params()->fromRoute('id') ব্যবহার করা হয়েছে, যা URL প্যারামিটার থেকে id মানটি নেয়ার জন্য ব্যবহৃত হয়।
৩. রাউটিং টাইপস
Zend Framework বা Laminas এ বিভিন্ন ধরনের রাউটিং টাইপ ব্যবহার করা হয়। প্রতিটি টাইপের সুবিধা আলাদা, এবং আপনি যে ধরনের URL প্যাটার্ন ব্যবহার করতে চান তার উপর নির্ভর করে টাইপ নির্বাচন করবেন।
Literal Route:
এটি একটি স্ট্যাটিক রাউট, যেখানে URL প্যাটার্ন কোনো পরিবর্তন হবে না।
উদাহরণ:
'route' => '/product'
Segment Route:
এটি ডাইনামিক প্যারামিটার গ্রহণ করে, যেখানে প্যারামিটার :parameter_name ব্যবহার করা হয়। উদাহরণস্বরূপ, /product/:id প্যাটার্ন।
উদাহরণ:
'route' => '/product/:id'
Regex Route:
এটি একটি রেগুলার এক্সপ্রেশন প্যাটার্ন ব্যবহার করে। রেগুলার এক্সপ্রেশন দিয়ে URL মাচ করতে পারবেন।
উদাহরণ:
'route' => '/product/(\d+)' // এখানে \d+ মানে শুধুমাত্র সংখ্যা হবে
Wildcard Route:
এটি URL প্যাটার্নের মধ্যে একটি ওয়াইল্ডকার্ড ব্যবহার করতে দেয়, যেখানে একটি অংশ যে কোনো টেক্সট হতে পারে।
উদাহরণ:
'route' => '/product/*' // এখানে * যেকোনো মান গ্রহণ করবে
সারাংশ
Zend Framework বা Laminas এ রাউটিং কনফিগারেশন URL প্যাটার্নকে কন্ট্রোলার এবং অ্যাকশন মেথডের সাথে ম্যাপ করে। module.config.php ফাইলে রাউট কনফিগার করা হয়, যেখানে বিভিন্ন রাউট টাইপ যেমন Literal, Segment, Regex, এবং Wildcard ব্যবহার করা হয়। এই রাউটিং সিস্টেমটি ইউজারের রিকোয়েস্ট অনুযায়ী সঠিক কন্ট্রোলার এবং অ্যাকশন এক্সিকিউট করার জন্য ব্যবহৃত হয়। params()->fromRoute('parameter') পদ্ধতি ব্যবহার করে URL প্যারামিটারগুলো কন্ট্রোলারে পাঠানো হয়।