Blade Template เป็น PHP Template Engine ที่ใช้อยู่ในลาราเวล (Laravel) สำหรับการแสดงผลต่างๆ บนวิว (view) โดยตัวมันจะถูกแปลเป็น PHP แล้วก็เก็บไว้ในแคช จนกว่าจะมีการเปลี่ยนแปลงใหม่ ก็จะทำการแปลหรือคอมไพล์อีกครั้ง การใช้งานก็ต้องเรียนรู้พอสมควรครับจึงจะใช้งานได้อย่างมีประสิทธิภาพ ตัวเทมเพลตนี้สามารถใช้งานนอกโปรแกรมที่เขียนด้วยลาราเวล คือไม่ใช้ลาราเวล ก็ได้นะครับ ดูจากลิงค์จาก github.com ที่นี่เลยครับ
ไฟล์ Blade จะเก็บไว้ในโฟลเดอร์วิวของลาราเวล คือ resources/views โดยจะมีนามสกุลเป็น .blade.php นะครับ การเรียกใช้ปกติก็สามารถเรียกผ่าน view() ซึ่งเป็นฟังก์ชั่น Helper ได้เลย หน้าที่เราคือไปเขียนโค้ดว่าจะให้แสดงผลอย่างไร ส่วนอื่นตัวลาราเวลทำให้เราเองครับ โดยการเรียกไม่ต้องระบุส่วน .blade.php นะครับ ตัวอย่างเช่น
public function create()
{
return view('posts.edit'); // ในไฟล์ controller
}
สำหรับโค้ดนี้มันจะไปหาไฟล์ใน resources/views/posts/edit.blade.php ครับ เราจะแบ่งโฟลเดอร์ยังไงก็ได้โดยใช้ . (จุด) แทน / ครับ
สำหรับการสร้างวิวย่อยนี้ เป็นส่วนของเราที่จะสร้างไฟล์ขึ้นมาเอง โดยจะเป็นส่วนเฉพาะการแสดงผลฟอร์ม จะไม่ใช่ HTML code ทั้งหมดนะครับ ตรงนี้ก็เป็นไปตามหลักกการออกแบบที่ต้องการให้มีความสม่ำเสมอ (Consistency) ของการออกแบบคือแต่ละหน้าจะมีความคล้ายกันนั่นแหละครับ
คำสั่งพื้นฐานต่างๆ ของ Blade จะคล้ายกับเป็นภาษานีงเลยครับ มี IF มี ELSE มีฟังก์ชันต่างๆ ให้ใช้ได้ร่วมกัน HTML เลย ตัวคำสั่งของ Blade จะเริ่มต้นด้วย นะครับ ตัวอย่างเช่น
@if (count($records) === 1)
I have one record!
@elseif (count($records) > 1)
I have multiple records!
@else
I don't have any records!
@endif
จากตัวอย่างด้านบนเป็นการใช้ if statement ในการตรวจสอบข้อมูลนะครับ หรือถ้าเราจะตรวจสอบว่าผู้ใช้งานได้ล็อกอินแล้วหรือไม่ก็ตามตัวอย่างครับ
@auth
// โค้ดสำหรับกรณีผู้ใช้ล็อกอินแล้ว
@endauth
@guest
// โค้ดสำหรับกรณีผู้ใช้ยังไม่ได้ล็อกอิน
@endguest
คำสั่งอย่าง loop เช่น for และ foreach แม่แต้ switch ก็มีนะครับ ตัวอย่างครับ
@foreach ($users as $user)
@if ($loop->first)
นี่คือข้อมูลตัวแรก
@endif
@if ($loop->last)
นี่คือข้อมูลตัวสุดท้าย
@endif
<p>ชื่อ-นามสกุล {{ $user->name }}</p>
@endforeach
คำสั่งอีกรูปแบบคือ include เพื่อใช้ในการดึงไฟล์อื่นมาแสดงผลครับ
<div>
@include('shared.errors')
<form>
<!-- Form Contents -->
</form>
</div>
จากตัวอย่างเราจะทำการดึงวิวย่อยส่วนการแสดงผลมาใช้งาน ก็เป็นการใช้งานซ้ำ หรือ reused ครับ สามารถ include ตามค่าตัวแปรก็ได้ครับ
@includeWhen($orderCompleted, 'orders.comleted')
จากตัวอย่างด้านบนคือถ้าตัวแปร $orderCompleted มีค่าเป็น true ให้ใช้วิวจาก views/orders/completed.blade.php เข้ามารวมในไฟล์ปัจจุบันครับ
สำหรับการใช้งาน Blade ยังมีอีกหลายรูปแบบครับ โดยเฉพาะการสร้าง Layout ซึ่งจะพูดถึงในบทความต่อไปนะครับ