Dev to webs {Coding…}

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

บทที่ 11: การจัดการ Resource Controllers

Resource Controllers ใน Laravel คือ Controller ที่สร้างขึ้นเพื่อจัดการ CRUD (Create, Read, Update, Delete) ได้อย่างสะดวกและเป็นระบบ โดย Laravel มีคำสั่งที่ช่วยให้เราสามารถสร้าง Controller ที่มีฟังก์ชันการทำงาน CRUD พื้นฐานมาให้พร้อมใช้งานในทันที ทำให้นักพัฒนาสามารถสร้างแอปพลิเคชันที่ต้องการจัดการข้อมูลในรูปแบบมาตรฐานได้ง่ายขึ้น

การสร้าง Resource Controller

ในการสร้าง Resource Controller สามารถใช้คำสั่ง Artisan เพื่อสร้าง Controller ที่ประกอบด้วยเมธอดพื้นฐานที่ใช้ใน CRUD ทั้งหมดดังนี้

php artisan make:controller ProductController --resource

หลังจากรันคำสั่งนี้ ระบบจะสร้างไฟล์ ProductController.php ภายในโฟลเดอร์ app/Http/Controllers และประกอบไปด้วยเมธอดต่างๆ ที่ใช้จัดการข้อมูลตามมาตรฐาน CRUD ได้แก่:

  1. index – แสดงรายการทั้งหมด
  2. create – แสดงแบบฟอร์มสำหรับสร้างข้อมูลใหม่
  3. store – เก็บข้อมูลใหม่ลงในฐานข้อมูล
  4. show – แสดงข้อมูลเฉพาะรายการ
  5. edit – แสดงแบบฟอร์มสำหรับแก้ไขข้อมูล
  6. update – อัปเดตข้อมูลในฐานข้อมูล
  7. destroy – ลบข้อมูลออกจากฐานข้อมูล

ตัวอย่างการใช้งาน Resource Controller

ในตัวอย่างนี้จะอธิบายการใช้งาน Resource Controller ของ ProductController ที่สร้างขึ้น โดยแต่ละเมธอดทำหน้าที่ต่างกันดังนี้:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProductController extends Controller
{
    // แสดงรายการสินค้าทั้งหมด
    public function index()
    {
        return 'List of products';
    }

    // แสดงฟอร์มสร้างสินค้าใหม่
    public function create()
    {
        return 'Form to create product';
    }

    // เก็บสินค้าใหม่ลงในฐานข้อมูล
    public function store(Request $request)
    {
        return 'Store new product';
    }

    // แสดงสินค้ารายการเฉพาะโดยใช้ ID
    public function show($id)
    {
        return 'Display product ' . $id;
    }

    // แสดงฟอร์มแก้ไขสินค้า
    public function edit($id)
    {
        return 'Form to edit product ' . $id;
    }

    // อัปเดตข้อมูลสินค้าลงในฐานข้อมูล
    public function update(Request $request, $id)
    {
        return 'Update product ' . $id;
    }

    // ลบสินค้าออกจากฐานข้อมูล
    public function destroy($id)
    {
        return 'Delete product ' . $id;
    }
}

การกำหนด Route สำหรับ Resource Controller

Laravel มีฟังก์ชันที่ช่วยสร้างเส้นทางทั้งหมดที่จำเป็นสำหรับ Resource Controller โดยใช้คำสั่ง Route::resource() ในไฟล์ routes/web.php

use App\Http\Controllers\ProductController;

Route::resource('products', ProductController::class);

คำสั่งนี้จะสร้างเส้นทางทั้งหมดที่ต้องการในการทำงาน CRUD ซึ่งประกอบด้วย:

  • GET /products – เรียกใช้ index เพื่อแสดงรายการสินค้า
  • GET /products/create – เรียกใช้ create เพื่อแสดงฟอร์มสร้างสินค้า
  • POST /products – เรียกใช้ store เพื่อเก็บสินค้าใหม่
  • GET /products/{id} – เรียกใช้ show เพื่อแสดงสินค้ารายการเดียว
  • GET /products/{id}/edit – เรียกใช้ edit เพื่อแสดงฟอร์มแก้ไขสินค้า
  • PUT/PATCH /products/{id} – เรียกใช้ update เพื่ออัปเดตข้อมูลสินค้า
  • DELETE /products/{id} – เรียกใช้ destroy เพื่อลบสินค้า

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

การใช้ Resource Controller ช่วยลดเวลาในการเขียนโค้ด และจัดการโครงสร้างโค้ดได้ง่ายขึ้น โดยสามารถนำมาใช้จัดการข้อมูลในแอปพลิเคชันที่มีการดำเนินการ CRUD อย่างสม่ำเสมอ เช่น การจัดการข้อมูลสินค้า ผู้ใช้ บทความ ฯลฯ นอกจากนี้ยังสามารถกำหนด Route ทั้งหมดในบรรทัดเดียวด้วย Route::resource() ทำให้โค้ดมีความกระชับและเป็นระเบียบ