Laravel: সম্পূর্ণ সহজ CRUD (Table Pagination) — টেবিল পেজিনেশন | অধ্যায় 10.4

Abu Sayed
2 min readFeb 20, 2024

--

এই ব্লগটিতে আপনি লারাভেল ১০-এ টেবিল পেজিনেশনের বেসিক কার্যকারিতা নিয়ে বাংলায় জানতে পারবেন। এখানে থাকা ব্যাখ্যা, উদাহরণ এবং কোড সামপ্লগুলো আপনাকে সিআরইউডি অ্যাপ্লিকেশনে পেজিনেশন যুক্ত করার সহজ উপায়গুলো বুঝতে সাহায্য করবে। ( Laravel: CRUD (Table Pagination) )

Laravel: CRUD (Table Pagination) টেবিল পেজিনেশন বাংলায় এর সহজ ব্যাখ্যা

পেজিনেশন কী?

টানা বড় ডাটা দেখানোর সময় অ্যাপ্লিকেশনগুলো খুব ধীর হয়ে যায়। ডাটাগুলোকে অংশ অংশ করে দেখানোর মাধ্যমে এই সমস্যা সমাধান করা যায়। এটাই পেজিনেশন। একটা ওয়েবসাইটে ১০০টা পোস্ট থাকলে সেগুলোকে ২০টা করে ভাগ করে ৫টা পেজে দেখানো যায়। এভাবে ওয়েবসাইট স্পিডি থাকে।

লারাভেলে পেজিনেশন যুক্ত করা

লারাভেলে পেজিনেশন যুক্ত করার জন্য আপনাকে ভিউ, কন্ট্রোলার এবং মডেলে কিছু পরিবর্তন করতে হবে। চলুন দেখি কীভাবে করতে হয়।

মডেলে পরিবর্তন

প্রথমেই আপনাকে আপনার মডেলে paginate() মেথডটি কল করতে হবে। উদাহরণস্বরূপ, যদি আপনার Post মডেল থাকে, তাহলে নিচের মতো করতে পারেন:

$posts = Post::paginate(10);

এখানে paginate(10) মানে হল, প্রতি পেজে ১০টা পোস্ট দেখাবে। আপনি এই সংখ্যাটি বাড়াতে বা কমাতে পারেন।

কন্ট্রোলারে পরিবর্তন

এবার আপনার কন্ট্রোলারে $posts ভ্যারিয়েবলটি ভিউতে পাস করতে হবে। উদাহরণস্বরূপ:

public function index()
{
$posts = Post::paginate(10);
return view('posts.index', compact('posts'));
}

ভিউতে পরিবর্তন

শেষ পর্যায়ে, আপনাকে ভিউতে পোস্টগুলো দেখানোর সাথে সাথে পেজিনেশন লিঙ্কগুলো দেখাতে হবে। লারাভেলের render() হেল্পার ব্যবহার করে এটা করা যাবে। উদাহরণস্বরূপ:

<!-- posts.blade.php -->
@foreach($posts as $post)
<h2>{{ $post->title }}</h2>
<p>{{ $post->body }}</p>
@endforeach
{{ $posts->links() }}

এখানে $posts->links() একটা লিঙ্ক জেনারেট করবে যা পেজিনেশনের জন্য ব্যবহৃত হবে। লারাভেলে বিল্ট-ইন ব্যুটিফাই লিঙ্কগুলো আছে, তবে আপনি কাস্টমাইজ করতে পারেন।

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

যদি আপনি পেজিনেশন লিঙ্কগুলোর স্টাইল কাস্টমাইজ করতে চান, তাহলে vendor/laravel/framework/src/Illuminate/Pagination/resources/views ডিরেক্টরিতে থাকা ব্লেড ফাইলগুলোকে কাস্টমাইজ করতে হবে। উদাহরণস্বরূপ, default.blade.php ফাইলটি এডিট করে আপনি লিঙ্কগুলোর স্টাইল পরিবর্তন করতে পারেন।

আপনি চাইলে config/pagination.php ফাইলটিও এডিট করে পেজিনেশনের অপশনগুলো কাস্টমাইজ করতে পারেন।

অন্যান্য পেজিনেশন অপশন

লারাভেলে আরও কিছু পেজিনেশন অপশন রয়েছে যা আপনি ব্যবহার করতে পারেন।

সিমপল পেজিনেশন

যদি আপনি শুধু পেজিনেশন লিঙ্কগুলোই দেখাতে চান, তাহলে simplePaginate() মেথডটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ:

$posts = Post::simplePaginate(10);

এবং ভিউতে:

{{ $posts->links() }}

সর্বোচ্চ পেজ সংখ্যা নির্ধারণ

আপনি paginate() মেথডে দ্বিতীয় পরামিটার হিসাবে সর্বোচ্চ পেজ সংখ্যা নির্দিষ্ট করতে পারেন। উদাহরণস্বরূপ:

$posts = Post::paginate(10, ['*'], ['max_pages' => 5]);

এখানে max_pages অপশনটি বলছে যে সর্বোচ্চ ৫টা পেজ দেখাবে।

পেজিনেশন লিঙ্ক শোর্টকাট

আপনি চাইলে ভিউতে @paginate শোর্টকাটও ব্যবহার করতে পারেন। উদাহরণস্বরূপ:

@paginate(['items' => $posts])
<h2>{{ $item->title }}</h2>
<p>{{ $item->body }}</p>
@endpaginate

এটা একই সাথে লুপ এবং পেজিনেশন লিঙ্কগুলো জেনারেট করবে।

পেজিনেশন এর উপকারিতা

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

সারসংক্ষেপ

সব মিলিয়ে বলতে গেলে, পেজিনেশন একটি গুরুত্বপূর্ণ ফিচার যা সিআরইউডি অ্যাপ্লিকেশনগুলোতে ব্যাপকভাবে ব্যবহৃত হয়। লারাভেল এই ফিচারটি সহজেই ইম্পলিমেন্ট করার সুবিধা দেয়। আপনি এই ব্লগের মাধ্যমে পেজিনেশন সম্পর্কে জেনেছেন এবং কীভাবে এটি লারাভেলে যুক্ত করতে হয় তা দেখেছেন। আশা করি এটা আপনার ওয়েব অ্যাপ্লিকেশনগুলোতে পেজিনেশন ব্যবহারের ক্ষেত্রে সাহায্য করবে।

--

--

Abu Sayed

Bangladeshi Full Stack Web Dev, Sys Admin & DevOps Engineer. Skills: Data analysis, SQL, Kubernetes. Python, PHP & Laravel. Me on: bd.linkedin.com/in/imabusayed