CodeIgniter-এ URI Routing হলো এমন একটি পদ্ধতি, যা ব্যবহারকারীর URL রিকোয়েস্টকে প্রাসঙ্গিক কন্ট্রোলার এবং মেথডের সাথে সংযুক্ত করে। এটি আপনাকে কাস্টম URL গঠন তৈরি করতে এবং ডিফল্ট রাউটিং পরিবর্তন করতে সহায়তা করে।
URI Routing কী?
CodeIgniter-এ URI Routing ব্যবহৃত হয়:
- URL-কে নির্দিষ্ট কন্ট্রোলার মেথড-এ রিডাইরেক্ট করতে।
- ডিফল্ট রাউট পরিবর্তন করতে।
- SEO-বান্ধব URL তৈরি করতে।
ডিফল্টভাবে, CodeIgniter এর রাউটিং সিস্টেম app/Config/Routes.php ফাইলে কনফিগার করা হয়।
ডিফল্ট রাউট
CodeIgniter একটি ডিফল্ট রাউট প্রদান করে, যা app/Controllers/Home.php এর index() মেথডে পয়েন্ট করে। এটি Routes.php ফাইলে এভাবে নির্ধারিত থাকে:
$routes->get('/', 'Home::index');
এটি ব্রাউজারে http://localhost/your_project/ লোড করলে চালু হয়।
Custom Routes তৈরি
১. বেসিক Custom Route
Custom Route তৈরি করতে Routes.php ফাইলে নিচের কোড যোগ করুন:
$routes->get('products', 'ProductController::index');
এটি ব্রাউজারের http://localhost/your_project/products URL-কে ProductController এর index() মেথডে রিডাইরেক্ট করবে।
২. Route Parameter ব্যবহার
Parameter সহ কাস্টম রাউট তৈরি করতে:
$routes->get('product/(:num)', 'ProductController::show/$1');
এখানে:
(:num): কেবল সংখ্যাসূচক মান গ্রহণ করবে।$1: URL এর প্রথম প্যারামিটার।
উদাহরণ:
- URL:
http://localhost/your_project/product/5 Controller মেথড:
public function show($id) { echo "Product ID: " . $id; }
৩. Multiple Route Parameters
যদি একাধিক প্যারামিটার প্রয়োজন হয়:
$routes->get('user/(:num)/order/(:num)', 'UserController::order/$1/$2');
এখানে:
$1: প্রথম প্যারামিটার (user ID)।$2: দ্বিতীয় প্যারামিটার (order ID)।
উদাহরণ:
- URL:
http://localhost/your_project/user/2/order/15 Controller মেথড:
public function order($userId, $orderId) { echo "User ID: " . $userId . ", Order ID: " . $orderId; }
Route Placeholder টাইপস
CodeIgniter বিভিন্ন ধরনের প্লেসহোল্ডার ব্যবহার করতে দেয়:
(:num): শুধুমাত্র সংখ্যা গ্রহণ করবে।(:alpha): শুধুমাত্র অক্ষর গ্রহণ করবে।(:alphanum): অক্ষর এবং সংখ্যা উভয় গ্রহণ করবে।(:any): যেকোনো কিছু গ্রহণ করবে (অক্ষর, সংখ্যা বা অন্যান্য)।(:segment): URL এর একটি সেগমেন্ট গ্রহণ করবে (এটি/ব্যতীত যেকোনো কিছু)।
HTTP ভেদে Route
GET, POST, PUT, DELETE ইত্যাদি HTTP মেথডের ভিত্তিতে কাস্টম রাউট তৈরি করা যায়।
উদাহরণ: POST Route
$routes->post('submit-form', 'FormController::submit');
এটি শুধুমাত্র POST রিকোয়েস্ট গ্রহণ করবে।
উদাহরণ: PUT Route
$routes->put('update-product/(:num)', 'ProductController::update/$1');
এটি PUT রিকোয়েস্ট গ্রহণ করবে।
Named Routes
Route এর জন্য নাম নির্ধারণ করে ব্যবহার করা যায়। এটি বড় অ্যাপ্লিকেশনের জন্য উপকারী।
$routes->get('profile', 'UserController::profile', ['as' => 'user_profile']);
এখন আপনি এই রাউটকে এভাবে ব্যবহার করতে পারেন:
echo route_to('user_profile');
Route Groups
Route গুলোকে একটি গ্রুপে সংগঠিত করা যায়। উদাহরণ:
$routes->group('admin', function($routes) {
$routes->get('dashboard', 'AdminController::dashboard');
$routes->get('users', 'AdminController::users');
});
এখন:
http://localhost/your_project/admin/dashboardhttp://localhost/your_project/admin/users
Route Fallback
Route ফাইলে একটি fallback route নির্ধারণ করা যায়, যা রাউট না পাওয়া গেলে কাজ করে।
$routes->set404Override(function() {
echo "Page not found!";
});
উদাহরণ: সম্পূর্ণ Routes
$routes->get('/', 'HomeController::index');
$routes->get('products', 'ProductController::index');
$routes->get('product/(:num)', 'ProductController::show/$1');
$routes->post('product/add', 'ProductController::add');
$routes->put('product/update/(:num)', 'ProductController::update/$1');
$routes->delete('product/delete/(:num)', 'ProductController::delete/$1');
$routes->group('admin', function($routes) {
$routes->get('dashboard', 'AdminController::dashboard');
$routes->get('users', 'AdminController::users');
});
সারাংশ
CodeIgniter-এ URI Routing কাস্টমাইজেশন অ্যাপ্লিকেশনের কার্যকারিতা বাড়ায় এবং ব্যবহারকারীর জন্য SEO-বান্ধব URL তৈরি করতে সহায়ক। Custom Routes, Route Parameters, এবং Named Routes ব্যবহার করে আপনি অ্যাপ্লিকেশনকে আরও সংগঠিত এবং ব্যবহারযোগ্য করতে পারেন।