@section
และ @extends
เป็นคำสั่งที่ใช้ใน Blade Template Engine ของ Laravel สำหรับจัดการเทมเพลตที่ซับซ้อนและนำเทมเพลตแม่มาใช้ซ้ำในหลายๆ หน้า โดยมีความแตกต่างกันดังนี้:
@extends
@extends
ใช้เพื่อบอกว่าหน้านี้จะสืบทอดโครงสร้างของ แม่แบบ (layout) หรือ แม่เทมเพลต (master template) ที่กำหนดไว้- เมื่อใช้
@extends('ชื่อไฟล์แม่แบบ')
จะบอก Blade ว่าหน้านั้นควรเริ่มต้นโครงสร้างตามเทมเพลตที่กำหนด - มักใช้ที่ด้านบนสุดของไฟล์ Blade เพื่อสืบทอดโครงสร้างทั้งหมด เช่น Header, Footer, Navbar ของเทมเพลตแม่
ตัวอย่างการใช้:
ในที่นี้ layouts.master
คือแม่แบบที่เราอ้างอิงถึง
@section
@section
ใช้สำหรับการกำหนด ส่วนเนื้อหา (content section) ในแต่ละส่วนของเทมเพลต- โดยปกติแล้ว แม่แบบจะมีการกำหนด
@yield('sectionName')
ไว้ล่วงหน้า และเมื่อมีการสืบทอดเทมเพลตโดยใช้@extends
แล้ว ก็สามารถใส่เนื้อหาลงในแต่ละ@section
ได้ - ใช้สำหรับกำหนดเนื้อหาที่แตกต่างกันในแต่ละหน้า ในขณะที่ยังใช้โครงสร้างเทมเพลตแม่เดียวกัน
ตัวอย่างการใช้:
ในที่นี้ @section('content')
จะตรงกับ @yield('content')
ที่มีอยู่ใน layouts.master
สรุป
@extends
ใช้เพื่อสืบทอดแม่แบบทั้งหมดของหน้า@section
ใช้เพื่อกำหนดเนื้อหาของแต่ละส่วนที่สืบทอดจากแม่แบบ
แบ่งปันกัน เราอยู่กันไม่เกิน 100 ปีหรอกครับ
สุดท้ายก็ทิ้งไว้ที่โลก จะคงเหลือไว้แต่คุณงามความดีที่ให้ระลึกถึงกันครับ
Follow Us / Thanat Sirikitphattana