Yii ফ্রেমওয়ার্কের রাউটিং সিস্টেম অ্যাপ্লিকেশন URL গুলি কীভাবে কন্ট্রোলার এবং অ্যাকশন ফাংশনে ম্যাপ করা হবে, তা নির্ধারণ করে। রাউটিং সিস্টেমটি কাস্টম URL তৈরি করতে, ইউজারকে ভিন্ন ভিন্ন কন্ট্রোলার বা অ্যাকশনে রিডিরেক্ট করতে এবং আরও অনেক কিছু করতে সহায়তা করে। Yii রাউটিং সিস্টেমটি খুবই শক্তিশালী এবং কনফিগারেশন ও কাস্টমাইজেশনে খুবই নমনীয়।
Yii এর রাউটিং সিস্টেমের মূল ধারণা
Yii ফ্রেমওয়ার্কের রাউটিং সিস্টেমের প্রধান কাজ হলো URL গুলো কন্ট্রোলার ও অ্যাকশন ফাংশনে রিডাইরেক্ট করা। এটি URL এর প্যাটার্ন এবং রুল নির্ধারণ করে। Yii ফ্রেমওয়ার্ক URL এর মাধ্যমে কোন কন্ট্রোলার এবং তার অ্যাকশন চালানো হবে তা জানে।
রাউটিং সিস্টেমের মৌলিক উপাদান:
URL Structure:
Yii 2 রাউটিং সিস্টেমে URL গুলি সাধারণত এরকম রূপে থাকে:http://example.com/index.php?r=controller/actionএখানে
controllerহলো কন্ট্রোলারের নাম এবংactionহলো অ্যাকশনের নাম।- Controller and Action:
URL এর মাধ্যমে, Yii কন্ট্রোলার এবং অ্যাকশন ফাংশন নির্বাচন করে। উদাহরণস্বরূপ, একটি URLhttp://example.com/index.php?r=site/indexএর মাধ্যমেSiteControllerকন্ট্রোলারেরactionIndexফাংশনটি কল করা হবে।
Yii রাউটিং সিস্টেমের কনফিগারেশন
Yii ফ্রেমওয়ার্কে রাউটিং সিস্টেম কনফিগার করা হয় প্রধানত config/web.php কনফিগারেশন ফাইলে।
১. Basic Routing (ডিফল্ট রাউটিং)
Yii-তে সাধারণভাবে রাউটিং কনফিগারেশন সহজ। ডিফল্টভাবে, URL গুলি index.php?r=controller/action ফর্ম্যাটে থাকে। সাধারণ রাউটিং কনফিগারেশন এরকম হতে পারে:
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'site/index' => 'site/index', // SiteController-এর index অ্যাকশন
],
],
],
enablePrettyUrl: এই সেটিংটিtrueকরলে Yii সুন্দর (SEO-friendly) URL তৈরি করতে সক্ষম হয়, যেমন:site/indexপরিবর্তেindex.php?r=site/index।showScriptName: এই সেটিংটিfalseকরলে URL থেকেindex.phpসরানো হয়।rules: এখানে কাস্টম URL রুল দেওয়া যায়। এটি URL এর বিশেষ প্যাটার্নগুলো ম্যানেজ করে এবং কন্ট্রোলার এবং অ্যাকশনে রিডাইরেক্ট করতে সহায়তা করে।
২. Pretty URL
Pretty URL সিস্টেম Yii 2-এ ডিফল্টরূপে সক্রিয় থাকে না, তবে এটি ব্যবহার করা সহজ। Pretty URL ব্যবহার করতে urlManager কম্পোনেন্ট কনফিগার করে enablePrettyUrl সেটিংটিকে true করতে হয়।
'components' => [
'urlManager' => [
'enablePrettyUrl' => true, // Pretty URL সক্ষম
'showScriptName' => false, // index.php URL থেকে সরানো
'rules' => [
'about' => 'site/about', // www.example.com/about => site/about অ্যাকশন
],
],
],
এখন, আপনি http://example.com/about এর মাধ্যমে SiteController এর actionAbout ফাংশনটি কল করতে পারবেন।
৩. Custom Routes (কাস্টম রাউট)
Yii আপনাকে URL এর রুল কাস্টমাইজ করতে দেয়। উদাহরণস্বরূপ, যদি আপনি চান URL দেখতে এমন হয় http://example.com/category/10, যেখানে category অ্যাকশনটি CategoryController তে থাকে এবং 10 হলো প্যারামিটার, তবে সেটি করতে পারেন:
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'category/<id:\d+>' => 'category/view', // category/10 -> CategoryController এর view অ্যাকশন
],
],
],
এখানে, <id:\d+> হলো URL প্যারামিটার যা সংখ্যার জন্য সংজ্ঞায়িত করা হয়েছে। এর মাধ্যমে category/10 URL দ্বারা CategoryController এর actionView ফাংশন কল করা হবে এবং 10 প্যারামিটার হিসাবে পাঠানো হবে।
Yii রাউটিং সিস্টেমের উন্নত ফিচার
Yii রাউটিং সিস্টেমে কিছু উন্নত ফিচার রয়েছে, যা আপনার অ্যাপ্লিকেশনের URL রাউটিং আরও শক্তিশালী ও নমনীয় করে তোলে।
১. URL Parameterization (প্যারামিটার ব্যবহার)
আপনি URL প্যারামিটার ব্যবহার করে কাস্টম প্যারামিটার পাস করতে পারেন। উদাহরণস্বরূপ, http://example.com/product/123 URL-এর মধ্যে 123 প্যারামিটার হিসেবে পাঠানো হবে। এর মাধ্যমে আপনি URL এর ডাইনামিক কনটেন্ট পরিচালনা করতে পারেন।
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'product/<id:\d+>' => 'product/view',
],
],
],
২. Default Routes (ডিফল্ট রাউট)
Yii-তে আপনি ডিফল্ট রাউট সেট করতে পারেন, যেমন ওয়েব অ্যাপ্লিকেশনের প্রধান পেজ বা প্রথম পেজ। ডিফল্ট রাউটগুলি এমনভাবে কনফিগার করা হয় যাতে যদি কেউ নির্দিষ্ট কন্ট্রোলার বা অ্যাকশন উল্লেখ না করে, তবে সেই ডিফল্ট রাউটটি ব্যবহার করা হয়।
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'' => 'site/index', // যদি কোন রাউট নির্দিষ্ট না করা হয়, তাহলে site/index কে ডিফল্ট হিসেবে ব্যবহার হবে
],
],
],
৩. Regex Based Routes (রেগুলার এক্সপ্রেশন ভিত্তিক রাউট)
Yii রাউটিং সিস্টেমে রেগুলার এক্সপ্রেশনও ব্যবহার করা যেতে পারে, যা আপনাকে আরও বেশি কাস্টমাইজড URL রুলস তৈরি করতে সাহায্য করে। উদাহরণস্বরূপ, আপনি চান শুধুমাত্র কিছু নির্দিষ্ট প্যাটার্নের প্যারামিটার গ্রহণ করা হোক:
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'post/<slug:[a-zA-Z0-9-]+>' => 'post/view', // শুধুমাত্র অক্ষর ও সংখ্যা অনুমোদিত
],
],
],
সারাংশ
Yii ফ্রেমওয়ার্কের রাউটিং সিস্টেম খুবই শক্তিশালী এবং নমনীয়, যা URL প্যাটার্ন ও কাস্টম রুলের মাধ্যমে কন্ট্রোলার এবং অ্যাকশনকে সঠিকভাবে ম্যাপ করে। আপনি সহজেই Pretty URLs, কাস্টম রাউট, প্যারামিটার ব্যবহার এবং রেগুলার এক্সপ্রেশন ভিত্তিক রাউট ব্যবহার করতে পারেন। Yii রাউটিং সিস্টেম এর মাধ্যমে ওয়েব অ্যাপ্লিকেশনের URL কাঠামো সম্পূর্ণভাবে কাস্টমাইজ এবং নিয়ন্ত্রণ করা যায়, যা SEO-বান্ধব এবং ইউজার ফ্রেন্ডলি।
Read more