Blade Template

Founder, MyCoding.Academy
วิศวกรไฟฟ้าและโทรคมนาที่หลงไหลการเขียนโปรแกรม เลยได้ทำงานประจำช่วงหนึ่งทางด้านการพัฒนาซอฟต์แวร์ ปัจจุบันก็ยังทำงานเป็นฟรีแลนซ์ทางด้านการเขียนโปรแกรมอยู่นะครับ

Blade Template เป็น PHP Template Engine ที่ใช้อยู่ในลาราเวล (Laravel) สำหรับการแสดงผลต่างๆ บนวิว (view) โดยตัวมันจะถูกแปลเป็น PHP แล้วก็เก็บไว้ในแคช จนกว่าจะมีการเปลี่ยนแปลงใหม่ ก็จะทำการแปลหรือคอมไพล์อีกครั้ง การใช้งานก็ต้องเรียนรู้พอสมควรครับจึงจะใช้งานได้อย่างมีประสิทธิภาพ ตัวเทมเพลตนี้สามารถใช้งานนอกโปรแกรมที่เขียนด้วยลาราเวล คือไม่ใช้ลาราเวล ก็ได้นะครับ ดูจากลิงค์จาก github.com ที่นี่เลยครับ

การใช้งาน Blade

ไฟล์ 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

คำสั่งพื้นฐานต่างๆ ของ 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 ซึ่งจะพูดถึงในบทความต่อไปนะครับ