Monday, 2 December 2024

@section และ @extends แตกต่างกันอย่างไร ?

12 Nov 2024
13
luminox watches

@section และ @extends เป็นคำสั่งที่ใช้ใน Blade Template Engine ของ Laravel สำหรับจัดการเทมเพลตที่ซับซ้อนและนำเทมเพลตแม่มาใช้ซ้ำในหลายๆ หน้า โดยมีความแตกต่างกันดังนี้:

@extends

  • @extends ใช้เพื่อบอกว่าหน้านี้จะสืบทอดโครงสร้างของ แม่แบบ (layout) หรือ แม่เทมเพลต (master template) ที่กำหนดไว้
  • เมื่อใช้ @extends('ชื่อไฟล์แม่แบบ') จะบอก Blade ว่าหน้านั้นควรเริ่มต้นโครงสร้างตามเทมเพลตที่กำหนด
  • มักใช้ที่ด้านบนสุดของไฟล์ Blade เพื่อสืบทอดโครงสร้างทั้งหมด เช่น Header, Footer, Navbar ของเทมเพลตแม่

ตัวอย่างการใช้:

php
{{-- child.blade.php --}}
@extends('layouts.master')

ในที่นี้ layouts.master คือแม่แบบที่เราอ้างอิงถึง

@section

  • @section ใช้สำหรับการกำหนด ส่วนเนื้อหา (content section) ในแต่ละส่วนของเทมเพลต
  • โดยปกติแล้ว แม่แบบจะมีการกำหนด @yield('sectionName') ไว้ล่วงหน้า และเมื่อมีการสืบทอดเทมเพลตโดยใช้ @extends แล้ว ก็สามารถใส่เนื้อหาลงในแต่ละ @section ได้
  • ใช้สำหรับกำหนดเนื้อหาที่แตกต่างกันในแต่ละหน้า ในขณะที่ยังใช้โครงสร้างเทมเพลตแม่เดียวกัน

ตัวอย่างการใช้:

php
{{-- child.blade.php --}}
@extends('layouts.master')
@section(‘content’)
<h1>Welcome to the content section!</h1>
@endsection

ในที่นี้ @section('content') จะตรงกับ @yield('content') ที่มีอยู่ใน layouts.master

สรุป

  • @extends ใช้เพื่อสืบทอดแม่แบบทั้งหมดของหน้า
  • @section ใช้เพื่อกำหนดเนื้อหาของแต่ละส่วนที่สืบทอดจากแม่แบบ
Thanat Sirikitphattana

แบ่งปันกัน เราอยู่กันไม่เกิน 100 ปีหรอกครับ
สุดท้ายก็ทิ้งไว้ที่โลก จะคงเหลือไว้แต่คุณงามความดีที่ให้ระลึกถึงกันครับ

Follow Us / Thanat Sirikitphattana