Pagination এবং Sorting এর জন্য কাস্টম লজিক

ডাটাবেস ইন্টিগ্রেশন এবং কুয়েরি বিল্ডার - ফুয়েলপিএইচপি (FuelPHP) - Web Development

245

FuelPHP একটি জনপ্রিয় PHP ফ্রেমওয়ার্ক, যা MVC (Model-View-Controller) আর্কিটেকচারে ভিত্তি করে তৈরি এবং এতে বিভিন্ন ধরনের কার্যকারিতা এবং কাস্টম লজিক তৈরির সুবিধা রয়েছে। Pagination (পাতা বিভাজন) এবং Sorting (সাজানো) ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে খুবই সাধারণ এবং প্রয়োজনীয় ফিচার। FuelPHP তে Pagination এবং Sorting কাস্টম লজিক তৈরি করা খুবই সহজ এবং এতে কার্যকরী কোড লেখা সম্ভব।

এখানে Pagination এবং Sorting এর জন্য কাস্টম লজিক তৈরির জন্য একটি সাধারণ গাইডলাইন দেওয়া হলো।


1. Pagination in FuelPHP

Pagination হলো একটি প্রক্রিয়া যেখানে বড় ডেটাসেটকে ছোট অংশে ভাগ করা হয় এবং ব্যবহারকারীরা একে একে পেজে ডেটা দেখতে পারেন। FuelPHP তে pagination খুবই সহজ এবং এতে Pagination ক্লাস ব্যবহার করা হয়।

Pagination Setup Example in FuelPHP:

  1. Controller: পেজিনেশন সেটআপ করা।
// fuel/app/classes/controller/product.php
class Controller_Product extends Controller
{
    public function action_index()
    {
        // Pagination configuration
        $config = array(
            'pagination_url' => Uri::base() . 'product/index',
            'per_page' => 10,  // Number of items per page
            'total_items' => Model_Product::count_all(),  // Total items in the table
            'uri_segment' => 3,  // URL segment for page number
        );

        // Initialize pagination
        $pagination = Pagination::forge('mypagination', $config);

        // Fetch the products for current page
        $products = Model_Product::find('all', array(
            'limit' => $pagination->per_page,
            'offset' => $pagination->offset,
        ));

        // Pass products and pagination to the view
        return View::forge('product/index', [
            'products' => $products,
            'pagination' => $pagination
        ]);
    }
}
  1. View: পেজিনেশন এবং প্রোডাক্টের তালিকা দেখানো।
// fuel/app/views/product/index.php
<h1>Product List</h1>
<ul>
    <?php foreach ($products as $product): ?>
        <li><?php echo $product->name; ?> - <?php echo $product->price; ?></li>
    <?php endforeach; ?>
</ul>

<!-- Pagination -->
<?php echo $pagination->render(); ?>

এখানে:

  • Pagination ক্লাসকে ব্যবহার করে ডেটার পেজিনেশন কনফিগার করা হয়েছে।
  • Pagination::forge() এর মাধ্যমে পেজিনেশন সেটআপ করা হয়েছে এবং limit এবং offset ব্যবহার করে ডেটা লোড করা হয়েছে।
  • render() মেথডের মাধ্যমে পেজিনেশন কন্ট্রোল দেখানো হচ্ছে।

2. Sorting in FuelPHP

Sorting হল একটি প্রক্রিয়া যেখানে আপনি ডেটাকে একটি নির্দিষ্ট কন্ডিশনে সাজান, যেমন নাম, তারিখ, প্রাইস ইত্যাদি অনুসারে। FuelPHP তে সোজা SQL কোয়েরি বা ORM ব্যবহার করে ডেটা সাজানো যায়।

Sorting Setup Example in FuelPHP:

  1. Controller: Sorting লজিক সেটআপ করা।
// fuel/app/classes/controller/product.php
class Controller_Product extends Controller
{
    public function action_index()
    {
        // Sorting parameter
        $sort_by = Input::get('sort', 'name');  // Default to sorting by 'name'
        $sort_order = Input::get('order', 'asc');  // Default to ascending order

        // Pagination configuration
        $config = array(
            'pagination_url' => Uri::base() . 'product/index',
            'per_page' => 10,  // Number of items per page
            'total_items' => Model_Product::count_all(),
            'uri_segment' => 3,
        );

        // Initialize pagination
        $pagination = Pagination::forge('mypagination', $config);

        // Fetch products with sorting
        $products = Model_Product::find('all', array(
            'limit' => $pagination->per_page,
            'offset' => $pagination->offset,
            'order_by' => array($sort_by => $sort_order),  // Sorting applied
        ));

        // Pass products, pagination, and sorting info to the view
        return View::forge('product/index', [
            'products' => $products,
            'pagination' => $pagination,
            'sort_by' => $sort_by,
            'sort_order' => $sort_order,
        ]);
    }
}
  1. View: Sorting এবং পেজিনেশন নিয়ন্ত্রণ।
// fuel/app/views/product/index.php
<h1>Product List</h1>

<!-- Sorting links -->
<a href="?sort=name&order=<?php echo ($sort_order == 'asc' ? 'desc' : 'asc'); ?>">Sort by Name</a> |
<a href="?sort=price&order=<?php echo ($sort_order == 'asc' ? 'desc' : 'asc'); ?>">Sort by Price</a>

<ul>
    <?php foreach ($products as $product): ?>
        <li><?php echo $product->name; ?> - <?php echo $product->price; ?></li>
    <?php endforeach; ?>
</ul>

<!-- Pagination -->
<?php echo $pagination->render(); ?>

এখানে:

  • Sorting লজিককে Input::get() এর মাধ্যমে গ্রহণ করা হয়েছে যাতে ব্যবহারকারী কোন কলামে ডেটা সাজাতে চায় তা নির্ধারণ করা যায়।
  • SQL এর ORDER BY ক্লজ ব্যবহার করে ডেটা সাজানো হচ্ছে, যেখানে sort_by এবং sort_order ভ্যারিয়েবল ব্যবহার করা হয়েছে।
  • ভিউতে সোর্টিং এর জন্য লিঙ্ক তৈরি করা হয়েছে যা পেজ রিফ্রেশের সময় ডেটা সোর্ট করবে।

3. Pagination এবং Sorting একসাথে ব্যবহারের উদাহরণ

ধরা যাক, আপনি পেজিনেশন এবং সটিং উভয়ই একসাথে ব্যবহার করতে চান:

// fuel/app/classes/controller/product.php
class Controller_Product extends Controller
{
    public function action_index()
    {
        // Sorting parameter
        $sort_by = Input::get('sort', 'name');
        $sort_order = Input::get('order', 'asc');

        // Pagination configuration
        $config = array(
            'pagination_url' => Uri::base() . 'product/index',
            'per_page' => 10,
            'total_items' => Model_Product::count_all(),
            'uri_segment' => 3,
        );

        // Initialize pagination
        $pagination = Pagination::forge('mypagination', $config);

        // Fetch products with sorting and pagination
        $products = Model_Product::find('all', array(
            'limit' => $pagination->per_page,
            'offset' => $pagination->offset,
            'order_by' => array($sort_by => $sort_order),
        ));

        return View::forge('product/index', [
            'products' => $products,
            'pagination' => $pagination,
            'sort_by' => $sort_by,
            'sort_order' => $sort_order,
        ]);
    }
}

এখানে:

  • পেজিনেশন এবং সটিং একসাথে কাজ করছে এবং ব্যবহারকারীকে পেজ এবং সটিং উভয়ের জন্য কন্ট্রোল দেওয়া হচ্ছে।

4. FuelPHP তে Custom Pagination and Sorting লজিক

আপনি যদি Pagination এবং Sorting এর জন্য কাস্টম লজিক তৈরি করতে চান, আপনি একটি কাস্টম কুইরি তৈরি করতে পারেন যা আপনার নির্দিষ্ট প্রয়োজন অনুসারে কাজ করবে। উদাহরণস্বরূপ, আপনি যদি ডেটার উপর বিশেষ ধরনের ফিল্টারিং এবং সাজানো প্রক্রিয়া করতে চান তবে আপনার কুইরি লজিক কাস্টমাইজ করতে পারেন।

Custom Query Example:

// fuel/app/classes/controller/product.php
class Controller_Product extends Controller
{
    public function action_index()
    {
        // Custom filters
        $search_term = Input::get('search', '');

        // Sorting parameter
        $sort_by = Input::get('sort', 'name');
        $sort_order = Input::get('order', 'asc');

        // Pagination configuration
        $config = array(
            'pagination_url' => Uri::base() . 'product/index',
            'per_page' => 10,
            'total_items' => Model_Product::count_all(),
            'uri_segment' => 3,
        );

        $pagination = Pagination::forge('mypagination', $config);

        // Custom Query with Filtering, Sorting, and Pagination
        $products = DB::select('*')
            ->from('products')
            ->like('name', '%' . $search_term . '%')  // Filtering
            ->order_by($sort_by, $sort_order)         // Sorting
            ->limit($pagination->per_page)
            ->offset($pagination->offset)
            ->execute();

        return View::forge('product/index', [
            'products' => $products,
            'pagination' => $pagination,
            'sort_by' => $sort_by,
            'sort_order' => $sort_order,
        ]);
    }
}

এখানে:

  • Custom filtering: like() দিয়ে ডেটার উপর ফিল্টারিং করা হয়েছে।
  • Custom sorting: order_by() দিয়ে কাস্টম সাজানো হয়েছে।
  • Pagination: পেজিনেশন লজিক একইভাবে কাজ করছে।

সারাংশ:

FuelPHP তে Pagination এবং Sorting খুবই সহজ এবং শক্তিশালী। আপনি Pagination::forge() এবং order_by() ব্যবহার করে সহজেই পেজিনেশন এবং সাজানো লজিক বাস্তবায়ন করতে পারেন। FuelPHP আপনাকে কাস্টম পেজিনেশন এবং সাজানোর জন্য কুইরি তৈরি করার সুবিধা প্রদান করে, যার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের ডেটা সহজেই ফিল্টার এবং সাজাতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...