Blade Directives เป็นฟีเจอร์ของ Blade Template Engine ใน Laravel ที่ช่วยให้เราสามารถเขียนโค้ด PHP ได้สะดวกขึ้นในรูปแบบที่อ่านง่าย Blade มี Directives ที่ช่วยในการควบคุมโค้ด เช่น @if
สำหรับเงื่อนไข และ @foreach
สำหรับการวนลูป ซึ่งทำให้การแสดงผลข้อมูลเป็นไปอย่างง่ายดาย
การใช้ Blade Directives พื้นฐาน
1. การใช้ @if
สำหรับเงื่อนไข
@if
เป็น Directive ที่ใช้ตรวจสอบเงื่อนไข หากเงื่อนไขเป็นจริงจะทำงานตามโค้ดในบล็อกนั้น Blade ยังรองรับคำสั่ง @elseif
และ @else
สำหรับการตรวจสอบเงื่อนไขเพิ่มเติม
<!-- resources/views/user.blade.php -->
@if($age >= 18)
<p>คุณสามารถเข้าถึงเนื้อหานี้ได้</p>
@elseif($age >= 13)
<p>คุณสามารถเข้าถึงเนื้อหาบางส่วนได้</p>
@else
<p>ขออภัย คุณยังไม่สามารถเข้าถึงเนื้อหานี้ได้</p>
@endif
ในตัวอย่างนี้ @if
ตรวจสอบว่าอายุมากกว่า 18 หรือไม่ ถ้าใช่จะแสดงข้อความแรก หากไม่ใช่จะตรวจสอบเงื่อนไขอื่น และถ้าไม่ตรงกับเงื่อนไขใดเลยจะแสดงข้อความในส่วนของ @else
2. การใช้ @foreach
สำหรับการวนลูป
@foreach
เป็น Directive ที่ใช้สำหรับการวนลูปข้อมูลที่เป็นอาร์เรย์หรือคอลเลกชัน ตัวอย่างเช่น การแสดงรายการสินค้า
<!-- resources/views/products.blade.php -->
<ul>
@foreach($products as $product)
<li>{{ $product->name }} - ราคา: {{ $product->price }} บาท</li>
@endforeach
</ul>
ในตัวอย่างนี้ @foreach
จะวนลูปข้อมูลใน $products
และแสดงชื่อและราคาของสินค้าทุกชิ้นในรายการ
3. การใช้ @for
, @while
, และ @forelse
Blade ยังรองรับการใช้ลูป @for
และ @while
สำหรับการทำงานซ้ำตามเงื่อนไข หรือการวนลูปตามจำนวนรอบที่ต้องการ นอกจากนี้ยังมี @forelse
ที่ใช้ตรวจสอบว่ามีข้อมูลหรือไม่ก่อนการวนลูป
@for – ใช้สำหรับการวนลูปตามจำนวนรอบที่กำหนด
@for($i = 0; $i < 5; $i++)
<p>หมายเลข: {{ $i }}</p>
@endfor
@while – ใช้สำหรับการวนลูปตามเงื่อนไข
@while($counter > 0)
<p>เหลือจำนวนรอบ: {{ $counter }}</p>
@php $counter--; @endphp
@endwhile
@forelse – ใช้สำหรับแสดงข้อมูลหากมี หรือแสดงข้อความอื่นหากไม่มีข้อมูล
@forelse($items as $item)
<p>{{ $item }}</p>
@empty
<p>ไม่มีรายการ</p>
@endforelse
ตัวอย่างการใช้งาน Blade Directives
ตัวอย่างการใช้งาน Blade Directives ใน View เพื่อแสดงผลข้อมูลที่ดึงมาจาก Controller:
<!-- resources/views/profile.blade.php -->
<h1>ข้อมูลส่วนตัว</h1>
<p>ชื่อ: {{ $name }}</p>
@if($is_admin)
<p>สถานะ: ผู้ดูแลระบบ</p>
@else
<p>สถานะ: ผู้ใช้งานทั่วไป</p>
@endif
<h2>รายการสินค้า</h2>
<ul>
@foreach($products as $product)
<li>{{ $product->name }} - {{ $product->price }} บาท</li>
@endforeach
</ul>
การนำไปใช้งาน
Blade Directives ช่วยให้การเขียนโค้ดเงื่อนไขและการวนลูปข้อมูลใน Blade Template เป็นไปได้ง่ายและสะอาดตา ช่วยให้นักพัฒนาเขียนโค้ดในรูปแบบที่เข้าใจง่าย และเพิ่มประสิทธิภาพในการจัดการข้อมูลที่ต้องการแสดงผลบนหน้าเว็บ ไม่ว่าจะเป็นการตรวจสอบเงื่อนไขหรือการวนลูปข้อมูล