Pagination Helper এর সাথে কাজ করা

ব্রেডক্রাম্ব এবং প্যাজিনেশন - কেকপিএইচপি (CakePHP) - Web Development

232

CakePHP তে Pagination Helper ব্যবহৃত হয় যাতে আপনি ডাটাবেস থেকে অনেক রেকর্ড পেজ করে পেজ করে দেখাতে পারেন। এটি সাধারণত ডাটা দেখানোর জন্য ব্যবহার করা হয় যখন আপনার ডাটাবেসে প্রচুর রেকর্ড থাকে এবং আপনি সেগুলিকে একসাথে লোড না করে পেজিনেশন (Pagination) এর মাধ্যমে ব্যবহারকারীদের দেখাতে চান। Pagination Helper আপনাকে সহজেই রেকর্ড পেজিনেট করতে এবং প্রয়োজনীয় নেভিগেশন লিংক তৈরি করতে সহায়তা করে।


Pagination Helper এর সাথে কাজ শুরু করা

CakePHP তে Pagination Helper ব্যবহার করতে, প্রথমে আপনার কন্ট্রোলার এবং ভিউতে কিছু কনফিগারেশন এবং কোড লিখতে হবে।


কন্ট্রোলারে Pagination কনফিগারেশন

CakePHP তে Pagination কন্ট্রোলারের মধ্যে কনফিগার করতে হয়। এখানে আপনি কোন মডেল থেকে ডাটা পাবেন, কিভাবে পেজিনেট করবেন এবং কনফিগারেশন সেট করবেন তা নির্দিষ্ট করেন।

কন্ট্রোলারে Pagination এর জন্য কোড

// src/Controller/PostsController.php
public function index()
{
    // Pagination ব্যবহার করতে 'paginate' মেথড ব্যবহার করুন
    $posts = $this->paginate($this->Posts);

    // ভিউতে পাঠানোর জন্য
    $this->set(compact('posts'));
}
  • $this->paginate($this->Posts): এখানে $this->Posts মডেল থেকে পেজিনেট করা হচ্ছে। CakePHP স্বয়ংক্রিয়ভাবে পেজিনেশন সম্পর্কিত কনফিগারেশন করবে।

Pagination কনফিগারেশন

আপনি যদি আরো নির্দিষ্ট পেজিনেশন কনফিগারেশন করতে চান, তাহলে paginate মেথডের মধ্যে অতিরিক্ত প্যারামিটার পাস করতে পারেন। উদাহরণস্বরূপ, আপনি এক পেজে কত রেকর্ড দেখাতে চান, সেটা নির্ধারণ করতে পারেন।

// src/Controller/PostsController.php
public function index()
{
    $query = $this->Posts->find('all')
        ->order(['Posts.created' => 'desc']);

    // কাস্টম পেজিনেশন কনফিগারেশন
    $posts = $this->paginate($query, [
        'limit' => 10,  // প্রতি পেজে ১০টি পোস্ট দেখানো হবে
        'order' => ['Posts.created' => 'desc']
    ]);

    $this->set(compact('posts'));
}
  • limit: এক পেজে কতটি রেকর্ড দেখানো হবে তা নির্ধারণ করে।
  • order: রেকর্ডের ক্রম ঠিক করতে ব্যবহৃত হয় (যেমন created ফিল্ড অনুসারে ডেটা সাজানো)।

ভিউতে Pagination Helper ব্যবহার

কন্ট্রোলারে ডাটা পেজিনেট করার পর, আপনাকে ভিউতে Pagination Helper ব্যবহার করতে হবে যাতে পেজিনেশন লিঙ্কগুলি সঠিকভাবে প্রদর্শিত হয়।

ভিউতে Pagination লিঙ্ক তৈরি করা

CakePHP তে Pagination Helper ব্যবহার করে পেজিনেশন লিঙ্ক তৈরি করা খুবই সহজ। ভিউ ফাইলে এটি যুক্ত করা হয়।

// src/Template/Posts/index.ctp
echo $this->Paginator->prev('Previous', null, null, ['class' => 'prev']);
echo $this->Paginator->numbers(['before' => '<ul>', 'after' => '</ul>', 'class' => 'pagination']);
echo $this->Paginator->next('Next', null, null, ['class' => 'next']);
  • $this->Paginator->prev(): পেজিনেশনের পূর্ববর্তী পেজের লিঙ্ক তৈরি করে।
  • $this->Paginator->numbers(): পেজ নম্বরের লিঙ্কগুলি তৈরি করে।
  • $this->Paginator->next(): পরবর্তী পেজের লিঙ্ক তৈরি করে।

এটি আপনার পেজিনেশন লিঙ্কগুলোকে কাস্টমাইজ করার জন্য CSS ক্লাস এবং অন্যান্য অপশনও নেবে।

পেজিনেশন লিঙ্কের কাস্টমাইজেশন

CakePHP তে Pagination Helper কাস্টমাইজ করা যায়। আপনি চাইলে numbers() এর মাধ্যমে পেজ নম্বরের লিঙ্ক কাস্টমাইজ করতে পারেন।

// src/Template/Posts/index.ctp
echo $this->Paginator->numbers([
    'before' => '<div class="pagination">',
    'after' => '</div>',
    'currentClass' => 'active',
    'model' => 'Posts'
]);

এটি বর্তমান পেজকে আলাদা করে দেখাবে এবং ক্লাস active যুক্ত করবে।


Pagination Helper এর সাথে আরও কাস্টম ফিচার

CakePHP তে Pagination Helper এর মাধ্যমে কিছু অতিরিক্ত কাস্টম ফিচারও যোগ করা যায়।

সারণী ফিল্টারিং

আপনি কাস্টম কুয়েরি প্যারামিটার ব্যবহার করে পেজিনেশন ফিচারকে আরো ফ্লেক্সিবল করতে পারেন। উদাহরণস্বরূপ, আপনি ক্যাটাগরি অনুযায়ী পোস্টগুলো পেজিনেট করতে চান:

// src/Controller/PostsController.php
public function index()
{
    $category = $this->request->getQuery('category');
    $query = $this->Posts->find('all');

    if ($category) {
        $query->where(['category_id' => $category]);
    }

    $posts = $this->paginate($query, ['limit' => 10]);
    $this->set(compact('posts'));
}

এখানে, আপনি URL থেকে ক্যাটাগরি ফিল্টার প্যারামিটার নিয়ে সেটি অনুযায়ী ডাটা ফিল্টার করছেন।

পেজিং এবং মোট ফলাফল সংখ্যা

CakePHP তে আপনি মোট রেকর্ড সংখ্যা এবং বর্তমান পেজের রেকর্ড সংখ্যা দেখাতে পারেন:

// src/Template/Posts/index.ctp
echo 'Showing ' . $this->Paginator->counter('current') . ' of ' . $this->Paginator->counter('count') . ' posts.';

এটি পেজিনেশন কাউন্টার প্রদর্শন করবে, যেমন: "Showing 1 to 10 of 50 posts."


CakePHP তে Pagination Helper ব্যবহারের মাধ্যমে আপনি সহজেই আপনার অ্যাপ্লিকেশনের বড় ডাটাবেস থেকে ডাটা পেজিনেট করতে পারেন। Paginator এবং Pagination Helper এর মাধ্যমে আপনি সুন্দরভাবে পেজিং, নেভিগেশন এবং কাস্টম লিঙ্ক তৈরি করতে পারেন, যা ব্যবহারকারীদের জন্য অনেক বেশি সুবিধাজনক হয়। ডাটা ফিল্টারিং এবং পেজ নম্বর কাস্টমাইজ করার সুবিধা CakePHP তে Pagination Helper কে আরও শক্তিশালী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...