Zend Framework বা Laminas এ রাউটিং হল ইউজারের রিকোয়েস্টের সাথে মিলিয়ে কন্ট্রোলার এবং অ্যাকশন নির্বাচন করার প্রক্রিয়া। রাউট প্যারামিটার এবং শর্তাবলী আপনাকে URL রাউটিংয়ের মধ্যে ডাইনামিক প্যারামিটার গ্রহণ এবং বিভিন্ন শর্তাবলী প্রয়োগ করার সুবিধা দেয়। এটি অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও ফ্লেক্সিবল এবং শক্তিশালী করে তোলে।
রাউট প্যারামিটার (Route Parameters)
রাউট প্যারামিটারগুলি একটি রাউটের অংশ হিসেবে ইউজারের ইনপুটের ভ্যালু হিসাবে ব্যবহৃত হয়। এটি URL থেকে ডাটা অ্যাক্সেস করতে সহায়তা করে। Zend Framework বা Laminas রাউটিং সিস্টেমে রাউট প্যারামিটার ব্যবহার করার মাধ্যমে, আপনি ডায়নামিক রাউট তৈরী করতে পারবেন, যা ভেরিয়েবল ডাটা পাস করতে সক্ষম।
উদাহরণ:
ধরা যাক, আপনি একটি অ্যাপ্লিকেশনে এমন একটি রাউট তৈরি করতে চান যেখানে পণ্যের আইডি URL থেকে পাস করা হবে:
/product/view/123
এখানে 123 হচ্ছে পণ্য আইডি, যা অ্যাকশন কন্ট্রোলার থেকে রিসিভ করা হবে।
রাউট প্যারামিটার কনফিগারেশন
Zend Framework বা Laminas রাউটিং কনফিগারেশনে আপনি প্যারামিটার ব্যবহার করতে পারেন। রাউট প্যারামিটার কনফিগার করতে, আপনাকে router সেকশনে প্যারামিটার সংজ্ঞায়িত করতে হবে।
module.config.php:
return [
'router' => [
'routes' => [
'product' => [
'type' => 'Segment', // রাউট টাইপ হিসেবে 'Segment' ব্যবহার
'options' => [
'route' => '/product/view/:id', // :id প্যারামিটার
'defaults' => [
'controller' => 'Product\Controller\Product',
'action' => 'view',
],
'constraints' => [
'id' => '[0-9]+' // id প্যারামিটার শুধুমাত্র সংখ্যা হবে
],
],
],
],
],
];
এখানে :id হচ্ছে রাউট প্যারামিটার, যা URL থেকে ডাইনামিক ভ্যালু নিবে। constraints এর মাধ্যমে আপনি প্যারামিটারটির মান যাচাই করতে পারেন, যেমন এখানে id প্যারামিটারটি শুধুমাত্র সংখ্যার হতে হবে ([0-9]+)।
কন্ট্রোলার এবং অ্যাকশন
এখন, যখন ইউজার /product/view/123 URL এ যাবে, তখন id প্যারামিটারটি কন্ট্রোলারে এক্সেস করা যাবে। কন্ট্রোলারটি এই প্যারামিটারটি গ্রহণ করবে এবং অ্যাকশনের মাধ্যমে প্রক্রিয়া করবে।
ProductController.php:
namespace Product\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class ProductController extends AbstractActionController
{
public function viewAction()
{
// প্যারামিটারটি নেওয়া
$id = $this->params()->fromRoute('id');
// আপনি এখানে পণ্য আইডি অনুযায়ী ডাটা লোড করতে পারেন
return new ViewModel([
'productId' => $id
]);
}
}
এখানে fromRoute('id') মেথডটি রাউট প্যারামিটার id এর মান গ্রহণ করবে এবং তারপরে সেই প্যারামিটারটি ব্যবহার করতে পারবেন।
রাউট শর্তাবলী (Route Constraints)
রাউট শর্তাবলী হল এমন নিয়ম বা বিধি যা রাউট প্যারামিটারগুলোর মান যাচাই করতে ব্যবহৃত হয়। শর্তাবলী ব্যবহার করে আপনি নির্দিষ্ট ধরনের ইনপুট যেমন শুধুমাত্র সংখ্যা, শব্দ, বা নির্দিষ্ট দৈর্ঘ্যের প্যারামিটার গ্রহণ করতে পারেন।
উদাহরণ:
ধরা যাক, আপনি product/view/:id রাউটটি তৈরি করেছেন, তবে আপনি চান যে id প্যারামিটারটি অবশ্যই একটি সংখ্যার হতে হবে। এটি নিশ্চিত করার জন্য আপনি constraints ব্যবহার করতে পারেন।
module.config.php:
return [
'router' => [
'routes' => [
'product' => [
'type' => 'Segment',
'options' => [
'route' => '/product/view/:id',
'defaults' => [
'controller' => 'Product\Controller\Product',
'action' => 'view',
],
'constraints' => [
'id' => '[0-9]+' // id প্যারামিটারটি শুধুমাত্র সংখ্যা হবে
],
],
],
],
],
];
এখানে constraints সেকশনে id প্যারামিটারটির জন্য নিয়ম নির্ধারণ করা হয়েছে যে এটি শুধুমাত্র সংখ্যা হতে হবে ([0-9]+)।
যদি ইউজার /product/view/abc রিকোয়েস্ট পাঠায়, তাহলে Zend Framework স্বয়ংক্রিয়ভাবে এটি এক্সেপ্ট করে একটি 404 (Not Found) রেসপন্স পাঠাবে, কারণ id প্যারামিটারটি সংখ্যা হওয়া উচিত।
প্যারামিটার এবং শর্তাবলীর বিভিন্ন ধরন
Zend Framework এ আপনি রাউট প্যারামিটার এবং শর্তাবলী বিভিন্নভাবে ব্যবহার করতে পারেন:
সাধারণ প্যারামিটার:
'route' => '/product/view/:id'অফশনে একাধিক প্যারামিটার:
'route' => '/product/:action/:id'নাম দিয়ে প্যারামিটার:
'route' => '/product/view/:productId'- শর্তাবলী (Constraints):
- সংখ্যা:
[0-9]+ - অক্ষর:
[a-zA-Z]+ - বিশেষ ক্যারেক্টার:
[a-zA-Z0-9_-]+
- সংখ্যা:
প্রিফিক্সের মাধ্যমে প্যারামিটার ব্যবহার:
'route' => '/product/:category/view/:id'
এখানে category এবং id দুটো প্যারামিটার রয়েছে, যা রাউট থেকে নেয়া হবে।
সারাংশ
Zend Framework এ রাউট প্যারামিটার এবং শর্তাবলী রাউটিংকে আরও ডাইনামিক ও ফ্লেক্সিবল করে তোলে। রাউট প্যারামিটার URL থেকে ডাটা নিয়ে কন্ট্রোলারে পাঠানোর সুযোগ দেয়, এবং শর্তাবলী আপনাকে রাউট প্যারামিটারগুলোর জন্য নির্দিষ্ট নিয়ম বা কন্ডিশন প্রয়োগ করতে দেয়। এই ফিচারগুলো অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও কার্যকর, নিরাপদ এবং স্কেলেবল করে তোলে।
Read more