Dev to webs {Coding…}

เรียนรู้การพัฒนาซอฟเวอร์ เพื่อความรู้ที่ยั่งยืน

บทที่ 18: การส่งข้อมูลไปยัง View

ในการพัฒนาเว็บแอปพลิเคชันด้วย Laravel การส่งข้อมูลจาก Controller ไปยัง View เป็นขั้นตอนสำคัญในการแสดงผลข้อมูลให้ผู้ใช้เห็น ซึ่ง Laravel มีหลายวิธีที่ช่วยให้การส่งข้อมูลไปยัง View ทำได้ง่ายและมีประสิทธิภาพ

การส่งข้อมูลจาก Controller ไปยัง View

Laravel ใช้ฟังก์ชัน view() ใน Controller เพื่อเรียก View และสามารถส่งข้อมูลไปยัง View ได้โดยใช้การกำหนดข้อมูลในรูปแบบอาร์เรย์หรือคำสั่ง compact()

ตัวอย่างการส่งข้อมูลโดยใช้ฟังก์ชัน with

// ตัวอย่าง Controller
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function profile()
    {
        $name = 'John Doe';
        return view('user.profile')->with('name', $name);
    }
}

ใน View user/profile.blade.php สามารถเรียกข้อมูล $name ที่ส่งมาได้ดังนี้:

<!-- resources/views/user/profile.blade.php -->
<p>ชื่อผู้ใช้: {{ $name }}</p>

การส่งข้อมูลหลายค่าโดยใช้ compact

หากต้องการส่งข้อมูลหลายตัวแปรไปยัง View สามารถใช้ฟังก์ชัน compact() ซึ่งจะนำตัวแปรหลายๆ ตัวใส่ในอาร์เรย์และส่งไปยัง View

public function profile()
{
    $name = 'John Doe';
    $age = 30;
    return view('user.profile', compact('name', 'age'));
}

ใน View user/profile.blade.php สามารถเรียกใช้ $name และ $age ได้:

<p>ชื่อผู้ใช้: {{ $name }}</p>
<p>อายุ: {{ $age }}</p>

การส่งข้อมูลเป็นอาร์เรย์

สามารถส่งข้อมูลหลายๆ ค่าโดยใช้รูปแบบอาร์เรย์ได้เช่นกัน:

public function profile()
{
    return view('user.profile', [
        'name' => 'John Doe',
        'age' => 30
    ]);
}

การใช้งานร่วมกับ Blade Template

ใน Blade Template สามารถเรียกข้อมูลที่ส่งมาจาก Controller ได้โดยใช้สัญลักษณ์ {{ ... }} เพื่อแสดงผลบนหน้าเว็บ นอกจากนี้ยังสามารถใช้ข้อมูลเหล่านี้ในเงื่อนไขหรือการวนลูปได้

ตัวอย่างการแสดงข้อมูลใน Blade Template:

<p>ชื่อ: {{ $name }}</p>
<p>อายุ: {{ $age }}</p>

การนำไปใช้งาน

การส่งข้อมูลไปยัง View เป็นกระบวนการที่ทำให้ข้อมูลสามารถแสดงผลบนหน้าเว็บตามที่ต้องการ ซึ่งเป็นพื้นฐานสำคัญในการพัฒนาเว็บแอปพลิเคชัน เช่น การแสดงข้อมูลโปรไฟล์ผู้ใช้ รายการสินค้า หรือข้อมูลใดๆ ที่ต้องดึงจากฐานข้อมูลและแสดงผลในหน้าเว็บ การใช้วิธีการส่งข้อมูลที่หลากหลายจะช่วยให้โค้ดมีความยืดหยุ่นและอ่านง่าย