কাস্টম রাউট তৈরি এবং কনফিগারেশন

Routing এবং URL ম্যানেজমেন্ট - জেন্ড ফ্রেমওয়ার্ক (Zend Framework) - Web Development

279

Zend Framework (এখন Laminas) এর রাউটিং সিস্টেম আপনাকে ইউজারের রিকোয়েস্ট অনুযায়ী সঠিক কন্ট্রোলার এবং অ্যাকশন কল করতে সাহায্য করে। আপনি যদি কাস্টম রাউট তৈরি করতে চান, তবে Zend Framework আপনাকে অনেক ধরনের রাউটিং কনফিগারেশন সরবরাহ করে। এটি আপনার অ্যাপ্লিকেশনের URL স্ট্রাকচার কাস্টমাইজ করতে এবং আলাদা আলাদা রিকোয়েস্ট হ্যান্ডেল করতে সাহায্য করে।

এখানে আমরা কাস্টম রাউট তৈরি এবং সেটির কনফিগারেশন নিয়ে আলোচনা করব, যা আপনার অ্যাপ্লিকেশনকে আরও নির্দিষ্ট রাউটিং নিয়ন্ত্রণ প্রদান করবে।


কাস্টম রাউট তৈরি করার জন্য প্রয়োজনীয় পদক্ষেপ

  1. রাউট কনফিগারেশন ফাইল তৈরি করুন: সাধারণত, কাস্টম রাউট কনফিগারেশনটি module.config.php বা application.config.php ফাইলে যুক্ত করা হয়।
  2. রাউটের টাইপ নির্ধারণ করুন: Zend Framework বিভিন্ন ধরনের রাউট টাইপ সমর্থন করে, যেমন Literal, Segment, Regex ইত্যাদি।
  3. রাউট ডিফাইন করা: রাউটের জন্য স্ট্রিং পাথ এবং সংশ্লিষ্ট কন্ট্রোলার ও অ্যাকশন নির্ধারণ করুন।

১. কাস্টম রাউটের জন্য কনফিগারেশন

আপনার মডিউল বা অ্যাপ্লিকেশন ফোল্ডারে কাস্টম রাউট কনফিগারেশন যোগ করার জন্য প্রথমে module.config.php ফাইলে router সেকশন ব্যবহার করতে হবে।

module.config.php:

<?php
namespace Product;

return [
    'router' => [
        'routes' => [
            'product' => [
                'type'    => 'Literal',
                'options' => [
                    'route'    => '/product',  // ইউজারের URL রিকোয়েস্টের পাথ
                    'defaults' => [
                        'controller' => 'Product\Controller\Product',
                        'action'     => 'index',
                    ],
                ],
            ],
            // কাস্টম রাউট উদাহরণ
            'product-detail' => [
                'type'    => 'Segment',
                'options' => [
                    'route'    => '/product/detail/[:id]',
                    'constraints' => [
                        'id' => '[0-9]+'  // id শুধুমাত্র সংখ্যার হতে হবে
                    ],
                    'defaults' => [
                        'controller' => 'Product\Controller\Product',
                        'action'     => 'detail',
                    ],
                ],
            ],
        ],
    ],
    'controllers' => [
        'invokables' => [
            'Product\Controller\Product' => 'Product\Controller\ProductController',
        ],
    ],
];

এখানে আমরা দুটি রাউট তৈরি করেছি:

  1. product: একটি লিটার রাউট, যা /product URL এর জন্য কন্ট্রোলার ProductController এর indexAction কল করবে।
  2. product-detail: একটি সেগমেন্ট রাউট, যা /product/detail/:id URL এ একটি id প্যারামিটার গ্রহণ করবে। এই রাউটটি ProductController এর detailAction কল করবে এবং শুধুমাত্র সংখ্যা (0-9) গ্রহণ করবে।

২. কন্ট্রোলারে অ্যাকশন তৈরি

এখন কন্ট্রোলারের মধ্যে নতুন অ্যাকশন (যেমন, detailAction) তৈরি করতে হবে, যা কাস্টম রাউটের জন্য কাজ করবে।

ProductController.php:

namespace Product\Controller;

use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;

class ProductController extends AbstractActionController
{
    public function indexAction()
    {
        // Default অ্যাকশন, যা '/product' রাউটের জন্য ব্যবহৃত হবে
        return new ViewModel();
    }

    public function detailAction()
    {
        // 'id' প্যারামিটারটি URL থেকে গ্রহণ করা হবে
        $id = $this->params()->fromRoute('id', null);
        
        // আপনার লজিক অনুযায়ী ডাটা প্রসেস করা যেতে পারে
        return new ViewModel([
            'id' => $id, // ভিউতে id পাঠানো হচ্ছে
        ]);
    }
}

এখানে, detailAction মেথডে id প্যারামিটারটি params()->fromRoute() মেথড ব্যবহার করে নেয়া হচ্ছে, যা URL থেকে id ফিল্ডের মান বের করে। তারপর এটি ভিউতে পাঠানো হচ্ছে।


৩. কাস্টম রাউটের জন্য ভিউ তৈরি

এখন আপনি একটি ভিউ ফাইল তৈরি করতে পারেন যা detailAction থেকে ডাটা রেন্ডার করবে। যেমন, আপনি id ভ্যারিয়েবলটি ভিউতে দেখাতে পারেন।

index.phtml (Product Module View):

<!-- index.phtml -->
<h1>Product List</h1>
<p>Welcome to the Product page!</p>

detail.phtml (Product Module View):

<!-- detail.phtml -->
<h1>Product Detail</h1>
<p>Product ID: <?php echo $this->escapeHtml($id); ?></p>

এখানে detail.phtml ফাইলে id ভ্যারিয়েবলটি রেন্ডার করা হচ্ছে, যা কন্ট্রোলার থেকে ভিউতে পাঠানো হয়েছিল।


৪. রাউটিং কনফিগারেশন বোঝা

Zend Framework বা Laminas এ রাউটিং কনফিগারেশন বিভিন্ন ধরনের রাউট তৈরির সুবিধা দেয়। এখানে কিছু সাধারণ রাউট টাইপ উল্লেখ করা হলো:

  1. Literal রাউট:
    • একটি স্ট্যাটিক URL পাথ।
    • উদাহরণ: /product
  2. Segment রাউট:
    • প্যারামিটার বা ডাইনামিক ভ্যালু নিয়ে রাউটিং করা হয়।
    • উদাহরণ: /product/detail/:id
  3. Regex রাউট:
    • কাস্টম রেগুলার এক্সপ্রেশন ব্যবহার করে রাউট কনফিগার করা হয়।
    • উদাহরণ: /product/\d+ (যেখানে \d+ মানে এক বা একাধিক ডিজিট)
  4. Wildcard রাউট:
    • একাধিক পাথের জন্য একটি রাউট তৈরি করা হয়।
    • উদাহরণ: /product/*

৫. কাস্টম রাউট পরীক্ষণ

একবার রাউট কনফিগারেশন এবং কন্ট্রোলার তৈরি হয়ে গেলে, আপনি অ্যাপ্লিকেশন চালু করে /product/detail/1 বা /product/detail/123 এই URL এ নেভিগেট করতে পারেন এবং সঠিকভাবে id প্যারামিটারটি দেখতে পাবেন।


সারাংশ

Zend Framework (এখন Laminas) এ কাস্টম রাউট তৈরি ও কনফিগারেশন খুবই সহজ। আপনি Literal, Segment, Regex ইত্যাদি রাউট টাইপ ব্যবহার করে ইউজারের রিকোয়েস্ট অনুযায়ী সঠিক কন্ট্রোলার এবং অ্যাকশন কল করতে পারেন। module.config.php ফাইলে রাউট কনফিগারেশন নির্ধারণের পর কন্ট্রোলারে সংশ্লিষ্ট অ্যাকশন তৈরি করতে হয়। এভাবে আপনি আপনার অ্যাপ্লিকেশনটির URL স্ট্রাকচার কাস্টমাইজ করতে পারেন এবং কোডের রিডেবিলিটি ও মেইনটেনিবিলিটি উন্নত করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...