"কিভাবে লারাভেলে টেমপ্লেটিং বা লেআউট বিল্ডিং করা যায়" এর দ্বিতীয় পার্ট নিয়ে চলে এলাম। আজ 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
এর ভিতরে সব কিছুকে সে দেখিয়ে দিবে। এইটুকুই কাজ।
এই মেথডটাই বেশি ব্যবহার করা হয়। তাই সবাই এটার উপর বেশি জোড় দিবেন বলে আশা করি। আজ এ পর্যন্তই। সবাই ভালো থাকুন।