Resource Routing এবং Custom URL Structure

Routing এবং URL Mapping - কেকপিএইচপি (CakePHP) - Web Development

254

CakePHP তে রাউটিং (Routing) একটি গুরুত্বপূর্ণ প্রক্রিয়া, যা URL পাথ এবং কন্ট্রোলার অ্যাকশনের মধ্যে সম্পর্ক স্থাপন করে। রাউটিং কনফিগারেশন ব্যবহার করে আপনি কাস্টম URL স্ট্রাকচার তৈরি করতে পারেন এবং বিভিন্ন রিসোর্সের জন্য ডায়নামিক URL গুলি পরিচালনা করতে পারেন। CakePHP এর রাউটিং সিস্টেম খুবই ফ্লেক্সিবল এবং শক্তিশালী, যা RESTful রাউটিং সহ বিভিন্ন কাস্টম রাউট তৈরি করতে সাহায্য করে।


রাউটিং কনফিগারেশন

CakePHP তে রাউটিং কনফিগারেশন config/routes.php ফাইলে করা হয়। এই ফাইলটিতে আপনি ডিফল্ট রাউটিং ছাড়াও কাস্টম রাউটিং সিস্টেমের সেটিংস করতে পারেন।

১. CakePHP তে ডিফল্ট রাউট

CakePHP তে রাউটিং কনফিগারেশনের জন্য কিছু ডিফল্ট রাউটিং প্রদান করা হয়। এর মাধ্যমে আপনি নির্দিষ্ট URL পাথে কন্ট্রোলার অ্যাকশন ম্যাপ করতে পারেন।

use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;

Router::defaultRouteClass('DashedRoute');
Router::scope('/', function (RouteBuilder $routes) {
    $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
    $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);
});

এখানে:

  • Router::connect() মেথডটি URL পাথ এবং কন্ট্রোলার অ্যাকশনের মধ্যে সম্পর্ক স্থাপন করে।
  • / পাথটি PagesController এর display অ্যাকশনকে নির্দেশ করে।

রিসোর্স রাউটিং (Resource Routing)

CakePHP তে রিসোর্স রাউটিং (Resource Routing) ব্যবহার করে আপনি RESTful রাউট গুলি সহজে তৈরি করতে পারেন। এই রাউটগুলি HTTP মেথড যেমন GET, POST, PUT, DELETE এর সাথে সম্পর্কিত থাকে।

২. রিসোর্স রাউট তৈরি

CakePHP তে রিসোর্স রাউটিং ব্যবহার করার জন্য resources মেথড ব্যবহার করা হয়, যা একটি রিসোর্সের জন্য সমস্ত RESTful অ্যাকশন রাউট করবে।

use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;

Router::scope('/', function (RouteBuilder $routes) {
    $routes->resources('Articles');
});

এই কোডটি স্বয়ংক্রিয়ভাবে নিম্নলিখিত রাউটগুলি তৈরি করবে:

  • GET /articles: ArticlesController::index()
  • GET /articles/view/{id}: ArticlesController::view()
  • GET /articles/add: ArticlesController::add()
  • POST /articles: ArticlesController::add()
  • GET /articles/edit/{id}: ArticlesController::edit()
  • PUT /articles/{id}: ArticlesController::edit()
  • DELETE /articles/{id}: ArticlesController::delete()

এভাবে আপনি একটি রিসোর্স তৈরি করে তার সমস্ত রাউট সহজেই কনফিগার করতে পারেন।


কাস্টম URL স্ট্রাকচার

CakePHP তে কাস্টম URL স্ট্রাকচার তৈরি করতে connect এবং scope পদ্ধতি ব্যবহার করা হয়। আপনি URL পাথে বিভিন্ন প্যারামিটার যুক্ত করে কাস্টম URL তৈরি করতে পারেন।

৩. কাস্টম রাউট তৈরি

এখানে কাস্টম URL স্ট্রাকচার তৈরির একটি উদাহরণ দেওয়া হলো:

use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;

Router::scope('/', function (RouteBuilder $routes) {
    // কাস্টম রাউট: '/article/{slug}' URL পাথ কন্ট্রোলার অ্যাকশনের সাথে সংযুক্ত
    $routes->connect('/article/:slug', ['controller' => 'Articles', 'action' => 'view'])
        ->setPatterns(['slug' => '[a-z0-9-]+'])
        ->setPass(['slug']);
});

এখানে:

  • /article/:slug পাথটি ArticlesController::view() অ্যাকশনকে নির্দেশ করে।
  • slug প্যারামিটারটি URL থেকে গ্রহণ করে কন্ট্রোলারে পাঠানো হয়।
  • .setPatterns() মেথড ব্যবহার করে slug প্যারামিটারটির জন্য প্যাটার্ন নির্ধারণ করা হয়েছে, যাতে শুধুমাত্র ছোট হাতের অক্ষর এবং হাইফেন থাকতে পারে।

এই রাউট কনফিগারেশন অনুযায়ী, একটি URL যেমন /article/my-first-article কন্ট্রোলারে পাঠানো হবে ArticlesController::view() অ্যাকশন এবং প্যারামিটার হিসেবে slug = 'my-first-article'


ডায়নামিক রাউট

CakePHP তে ডায়নামিক রাউট ব্যবহার করে আপনি বিভিন্ন কন্ডিশনের ভিত্তিতে URL স্ট্রাকচার কনফিগার করতে পারেন।

৪. ডায়নামিক রাউট উদাহরণ

use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;

Router::scope('/', function (RouteBuilder $routes) {
    // ডায়নামিক রাউট: URL এর অংশ হিসেবে date এবং category ব্যবহার
    $routes->connect('/news/:date/:category', ['controller' => 'News', 'action' => 'view'])
        ->setPatterns(['date' => '\d{4}-\d{2}-\d{2}', 'category' => '[a-z\-]+'])
        ->setPass(['date', 'category']);
});

এই রাউট কনফিগারেশনটি URL পাথ /news/2024-05-01/technology কে NewsController::view() অ্যাকশনে পাঠাবে, যেখানে date = '2024-05-01' এবং category = 'technology' প্যারামিটার হিসেবে পাঠানো হবে।


CakePHP এর রাউটিং সিস্টেম খুবই ফ্লেক্সিবল এবং শক্তিশালী। আপনি সহজেই রিসোর্স রাউটিং, কাস্টম URL স্ট্রাকচার এবং ডায়নামিক রাউট তৈরি করতে পারেন। এই সিস্টেমটি RESTful API তৈরি, সুন্দর ও কার্যকর URL স্ট্রাকচার নিশ্চিত করতে সাহায্য করে এবং আপনার অ্যাপ্লিকেশনকে আরও কাস্টমাইজযোগ্য ও স্কেলেবল করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...