লারাভেলে লেআউট বিল্ডিং বা টেমপ্লেটিং পার্ট ২

লারাভেলে লেআউট বিল্ডিং বা টেমপ্লেটিং পার্ট ২

"কিভাবে লারাভেলে টেমপ্লেটিং বা লেআউট বিল্ডিং করা যায়" এর দ্বিতীয় পার্ট নিয়ে চলে এলাম। আজ Layouts Using Template Inheritance মেথড নিয়ে আলোচনা করা যাক।

#Layouts Using Template Inheritance

গতদিন আলোচনা করেছিলাম {{ $slot }} এট্রিবিউট এবং <x-layout> ট্যাগ দিয়ে কিভাবে Header, Footer এর মত কমন জিনিস গুলো সহজেই প্রতিটা পেইজেই লোড করানো যায়। যদি আগের আর্টিকেলটি না পড়ে থাকেন তাহলে চলে যেতে পারেন এই লিঙ্কেঃ- লারাভেলে লেআউট বিল্ডিং বা টেমপ্লেটিং

আজকে একই রকম কাজ ভিন্ন মেথডে দেখবো, এখানে {{ $slot }} এর জায়গায় ব্যবহার করতে হবে @yield এবং <x-layout> এর জায়গায় ব্যবহার করতে হবে @extends এবং @section...@endsection

@yield এর কাজঃ

layout.blade.php ফাইলে আগের মতই Header এবং Footer এর সব কন্টেন্ট রেখে দেবো। এই দুইয়ের মধ্যে থাকা পেইজ কন্টেন্ট গুলো Dynamically দেখানোর জন্য @yield ব্যবহার করতে হবে। নিচের উদাহরণ দেখুনঃ

এই এট্রিবিউটের আবার ডিফল্ট একটা Parameter থাকে যেটাকে পেইজ গুলোতে গিয়ে এই Parameter কে ধরতে হয় @section কে দিয়ে। এই Screenshot এ আমি Parameter হিসেবে 'page-content' নিয়েছি। আপনারা যেকোনো নামে এটি নিতে পারেন। আপাতত layout.blade.php ফাইলে এইটুকু লিখলেই চলবে।

@extends এর কাজঃ

এবার ধরুন আমরা হোমপেইজকে লেআউটিং করাতে চাচ্ছি। তাই চলে আসুন welcome.blade.php ফাইলে। এখানে আগের <x-layout> এর বদলে শুরুতেই লিখুন @extends। এইটা মূলত বুঝাবে layout.blade.php কে লিংক করানো। এটারও একটা Parameter থাকবে। সেই Parameter এর ভিতরে থাকবে layout.blade.php ফাইলের PATH টা। যেমনঃ

@section...@endsection এর কাজঃ

@extends এর নিচেই লিখতে হবে @section টা। এইটা ঐ @yield এর Parameter টাকে ধরে বলবে তুমি আমার ভিতরে যা আছে সব দেখিয়ে দাও। মানে @section এবং @endsection এর ভিতরে সব কিছুকে সে দেখিয়ে দিবে। এইটুকুই কাজ।

এই মেথডটাই বেশি ব্যবহার করা হয়। তাই সবাই এটার উপর বেশি জোড় দিবেন বলে আশা করি। আজ এ পর্যন্তই। সবাই ভালো থাকুন।