Dev to webs {Coding…}

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

บทที่ 10: การสร้าง Controller ด้วย Artisan

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

การสร้าง Controller ด้วย Artisan

การสร้าง Controller สามารถทำได้โดยใช้คำสั่ง php artisan make:controller ตามด้วยชื่อ Controller ที่ต้องการสร้าง ตัวอย่างเช่น หากต้องการสร้าง Controller ชื่อ ProductController สามารถใช้คำสั่งดังนี้:

php artisan make:controller ProductController

หลังจากรันคำสั่งนี้ Laravel จะสร้างไฟล์ ProductController.php ในโฟลเดอร์ app/Http/Controllers/ ซึ่งเป็นโฟลเดอร์ที่เก็บ Controller ทั้งหมดของแอปพลิเคชัน

การสร้าง Resource Controller

Laravel ยังรองรับการสร้าง Resource Controller ซึ่งจะสร้างเมธอดพื้นฐานทั้งหมดที่ใช้ใน CRUD (Create, Read, Update, Delete) ให้โดยอัตโนมัติ เราสามารถสร้าง Resource Controller ได้โดยเพิ่มออปชั่น --resource หลังชื่อ Controller:

php artisan make:controller ProductController --resource

คำสั่งนี้จะสร้างเมธอดต่างๆ เช่น index, create, store, show, edit, update, และ destroy ใน ProductController.php พร้อมสำหรับการใช้งาน

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

  1. สร้าง Controller ธรรมดา
php artisan make:controller UserController

หลังจากสร้างแล้วสามารถกำหนดฟังก์ชันที่ต้องการใน UserController เช่น:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        return view('user.index');
    }

    public function show($id)
    {
        return 'User ID: ' . $id;
    }
}

2. สร้าง Resource Controller

php artisan make:controller ProductController --resource

จะได้ Controller ที่มีเมธอดพร้อมใช้งาน เช่น:

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';
    }

    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;
    }
}


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

หลังจากสร้าง Controller แล้ว สามารถกำหนดเส้นทางใน routes/web.php เพื่อลิงก์กับ Controller และเมธอดที่สร้างไว้ ตัวอย่างการกำหนดเส้นทางสำหรับ Resource Controller:

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

คำสั่งนี้จะสร้างเส้นทางทั้งหมดที่จำเป็นสำหรับการทำงาน CRUD ของผลิตภัณฑ์ เช่น

  • GET /products – เรียกใช้เมธอด index
  • GET /products/{id} – เรียกใช้เมธอด show
  • POST /products – เรียกใช้เมธอด store
  • PUT /products/{id} – เรียกใช้เมธอด update
  • DELETE /products/{id} – เรียกใช้เมธอด destroy