CakePHP তে রাউটিং (Routing) এমন একটি প্রক্রিয়া যা URL এর সাথে নির্দিষ্ট কন্ট্রোলার অ্যাকশনকে সংযুক্ত করে। রাউটিং কনফিগারেশন config/routes.php ফাইলে করা হয়, যেখানে আপনি ডিফল্ট এবং কাস্টম রাউট সংজ্ঞায়িত করতে পারেন। রাউটিং এর মাধ্যমে অ্যাপ্লিকেশন সহজভাবে ইউজারের HTTP রিকোয়েস্ট প্রসেস করতে পারে এবং নির্দিষ্ট কন্ট্রোলার এবং অ্যাকশনের সাথে যোগাযোগ স্থাপন করতে পারে।
১. Basic Routes (বেসিক রাউটস)
বেসিক রাউটস হলো সোজা এবং সরল URL প্যাটার্ন যা সরাসরি কন্ট্রোলার অ্যাকশনের সাথে ম্যাপ করা হয়। CakePHP ডিফল্ট রাউটগুলি কনফিগার করে থাকে, তবে আপনি নিজের প্রয়োজন অনুসারে কাস্টম রাউটও তৈরি করতে পারেন।
১.১. ডিফল্ট রাউট কনফিগারেশন
CakePHP এর ডিফল্ট রাউট কনফিগারেশন এমনভাবে সেট করা থাকে যাতে controller/action এর ভিত্তিতে রাউট কাজ করে। উদাহরণস্বরূপ, যদি URL হয় http://localhost/posts/index, তাহলে CakePHP এর রাউটিং সিস্টেম স্বয়ংক্রিয়ভাবে PostsController এর index() অ্যাকশনটি কল করবে।
ডিফল্ট রাউটের কনফিগারেশন দেখতে হলে config/routes.php ফাইলে নীচের মতো দেখতে পাবেন:
use Cake\Routing\Route\Router;
use Cake\Routing\Route\DashedRoute;
Router::defaultRouteClass(DashedRoute::class);
// Default route (controller/action)
Router::connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
এখানে:
- প্রথম রাউটটি মূল পেজ
/কেPagesControllerএরdisplay()অ্যাকশনের সাথে সংযুক্ত করছে। - দ্বিতীয় রাউটটি
/প্যাথকেhomeপেজ হিসেবে নির্দেশিত করছে।
১.২. কাস্টম রাউট তৈরি
কাস্টম রাউট তৈরি করতে, Router::connect() ফাংশন ব্যবহার করা হয়। আপনি নিজস্ব প্যাটার্ন এবং কন্ট্রোলার/অ্যাকশন এর সাথে রাউট মেপ করতে পারেন।
উদাহরণস্বরূপ:
Router::connect('/about', ['controller' => 'Pages', 'action' => 'display', 'about']);
এই রাউটটি /about URL কে PagesController এর display() অ্যাকশনের সাথে যুক্ত করবে, যেখানে about পেজ প্রদর্শিত হবে।
১.৩. রাউটিং প্যাটার্ন
CakePHP তে রাউটিং প্যাটার্ন তৈরি করা খুবই সহজ। আপনি URL এর বিভিন্ন অংশকে কাস্টম ভ্যালু হিসেবে সংজ্ঞায়িত করতে পারেন।
Router::connect('/posts/:id', ['controller' => 'Posts', 'action' => 'view'], ['pass' => ['id']]);
এখানে:
:idহল একটি প্লেসহোল্ডার যা URL থেকে ডাইনামিক ভ্যালু গ্রহণ করবে এবং তাview()অ্যাকশনে প্যারামিটার হিসেবে পাঠাবে।
২. Dynamic Routes (ডাইনামিক রাউটস)
ডাইনামিক রাউটিং ব্যবহৃত হয় যখন URL এর কিছু অংশ পরিবর্তনশীল থাকে এবং আপনাকে সেই পরিবর্তনশীল ডেটা কন্ট্রোলার অ্যাকশনে পাঠাতে হয়। উদাহরণস্বরূপ, পোস্টের আইডি বা ইউজারের নাম URL এ ডাইনামিক প্যারামিটার হিসেবে থাকতে পারে।
২.১. ডাইনামিক রাউটসের ব্যবহার
CakePHP তে আপনি :parameter ব্যবহার করে ডাইনামিক রাউট তৈরি করতে পারেন। এই প্যাটার্নটি URL থেকে ডাইনামিক ভ্যালু গ্রহণ করে এবং সেটি কন্ট্রোলার অ্যাকশনে পাস করে।
উদাহরণস্বরূপ:
Router::connect('/posts/:id', ['controller' => 'Posts', 'action' => 'view'], ['pass' => ['id']]);
এই রাউটটি /posts/5 URL কে PostsController এর view() অ্যাকশনে পাঠাবে, যেখানে 5 হবে id প্যারামিটার।
২.২. একাধিক ডাইনামিক প্যারামিটার
একাধিক ডাইনামিক প্যারামিটারও CakePHP তে ব্যবহার করা যায়। আপনি যে কোন সংখ্যক ডাইনামিক প্যারামিটার পাস করতে পারেন।
Router::connect('/posts/:id/:slug', ['controller' => 'Posts', 'action' => 'view'], ['pass' => ['id', 'slug']]);
এখানে:
- URL যেমন
/posts/5/sample-postকন্ট্রোলার অ্যাকশনেid(৫) এবংslug(sample-post) প্যারামিটার হিসেবে পাঠানো হবে।
২.৩. কাস্টম রাউটিং কন্ডিশন
আপনি চাইলে রাউটিং কন্ডিশনও নির্ধারণ করতে পারেন, যা রাউট নির্বাচন করতে সহায়তা করে।
Router::connect('/admin/:controller/:action/*', ['prefix' => 'admin'], ['routeClass' => 'DashedRoute']);
এখানে:
prefixপ্যারামিটারটিadminসেকশনের জন্য রাউটিং নির্ধারণ করবে।
৩. রাউট কনফিগারেশনের উন্নত ব্যবহার
CakePHP তে আরও কিছু উন্নত রাউট কনফিগারেশন করা যেতে পারে যেমন:
৩.১. রাউট ফাইল লোড করা
CakePHP আপনাকে আলাদা রাউট ফাইল তৈরি এবং সেই ফাইলকে লোড করার অনুমতি দেয়। এটি বড় অ্যাপ্লিকেশনের ক্ষেত্রে খুবই কার্যকরী।
// In config/routes.php
Router::scope('/admin', function ($routes) {
$routes->connect('/dashboard', ['controller' => 'Dashboard', 'action' => 'index']);
});
এখানে /admin প্যাটার্নের অধীনে নতুন রাউট সংজ্ঞায়িত করা হয়েছে।
৩.২. রাউট গ্রুপিং
CakePHP তে রাউট গ্রুপিং এর মাধ্যমে একাধিক রাউট একই প্যাটার্নের অধীনে একত্রিত করা যায়।
Router::prefix('admin', function ($routes) {
$routes->connect('/dashboard', ['controller' => 'Dashboard', 'action' => 'index']);
$routes->connect('/settings', ['controller' => 'Settings', 'action' => 'index']);
});
এখানে /admin/dashboard এবং /admin/settings রাউট একত্রিত করা হয়েছে।
CakePHP তে রাউটিং কনফিগারেশন খুবই শক্তিশালী এবং নমনীয়। বেসিক রাউট এবং ডাইনামিক রাউট ব্যবহার করে আপনি যেকোনো ধরনের URL কাস্টমাইজ করতে পারেন। রাউটিং কনফিগারেশন এ সাহায্যে আপনি অ্যাপ্লিকেশনের ইউজার ইন্টারফেসকে আরও ফ্লেক্সিবল এবং সোজা রাখতে পারেন।
Read more