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
- สร้าง 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