Controllers ใน Laravel เป็นส่วนสำคัญที่ช่วยในการจัดการกับการ
ทำงานของแอปพลิเคชัน เช่น การรับส่งข้อมูลจากผู้ใช้ การประมวลผลข้อมูล และการตอบกลับด้วยข้อมูลหรือวิวต่างๆ
พื้นฐานการเขียน Controllers ใน Laravel
- สร้าง Controller: ใน Laravel สามารถสร้าง Controller ได้ด้วยคำสั่ง
artisan
command เช่น-
php artisan make:controller ExampleController
- คำสั่งนี้จะสร้างไฟล์
ExampleController.php
ในโฟลเดอร์app/Http/Controllers/
-
- การกำหนดฟังก์ชันใน Controller: ภายใน Controller คุณสามารถสร้างฟังก์ชันต่าง ๆ เพื่อจัดการกับ request เช่น
- ฟังก์ชัน
index
จะถูกเรียกเมื่อมี request มายัง/example
และฟังก์ชันshow
จะถูกเรียกเมื่อมี request มายัง/example/{id}
.
- ฟังก์ชัน
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ExampleController extends Controller { public function index() { return view('example.index'); } public function show($id) { return view('example.show', compact('id')); } } |
- Routing การเชื่อมต่อ Controller กับ URL: ใน Laravel คุณสามารถกำหนดเส้นทาง (route) ที่เชื่อมโยงกับ controller ได้ในไฟล์
routes/web.php
เช่น- Route::get(‘/example’, [ExampleController::class, ‘index’]);
- Route::get(‘/example/{id}’, [ExampleController::class, ‘show’]);
- Middleware: คุณสามารถใช้ Middleware กับ Controller เพื่อจัดการการเข้าถึงหรือกระบวนการต่างๆ ก่อนที่จะถึง controller method เช่น
1 2 3 4 5 6 7 8 9 10 11 12 |
class ExampleController extends Controller { public function __construct() { $this->middleware('auth'); } public function index() { return view('example.index'); } } |
- การใช้ Middleware
auth
จะทำให้การเข้าถึงฟังก์ชันใน controller นี้ต้องผ่านการยืนยันตัวตนก่อน - Middleware ใน Laravel เป็นชั้นการทำงานที่อยู่ระหว่างการรับ Request และการส่ง Response ของแอปพลิเคชัน โดย Middleware สามารถใช้เพื่อจัดการกับการทำงานต่างๆ ก่อนหรือหลังที่ Request จะเข้าสู่ Controller หรือ View เช่น การตรวจสอบสิทธิ์การเข้าถึง, การจัดการ session, หรือการบันทึก log
- คุณสามารถสร้าง Middleware ใหม่ได้โดยใช้คำสั่ง
artisan
เช่น- php artisan make:middleware middleware
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php namespace App\Http\Middleware; use Illuminate\Auth\Middleware\Authenticate as Middleware; class Authenticate extends Middleware { /** * Get the path the user should be redirected to when they are not authenticated. * * @param \Illuminate\Http\Request $request * @return string|null */ protected function redirectTo($request) { if (! $request->expectsJson()) { return route('login'); } } } |
- ฟังก์ชัน
redirectTo
- ฟังก์ชัน
redirectTo($request)
: ฟังก์ชันนี้ใช้เพื่อกำหนดเส้นทางที่ผู้ใช้ควรถูก Redirect ไปหากยังไม่ได้เข้าสู่ระบบ (ไม่ได้รับการ Authenticated). - Parameter
$request
: เป็นออบเจ็กต์ที่แทนข้อมูล Request ที่ผู้ใช้ส่งมา ซึ่งมีข้อมูลต่างๆ เช่น URL, Method, Header เป็นต้น. $request->expectsJson()
: เป็นการตรวจสอบว่า Request ที่เข้ามานั้นคาดหวังจะได้รับการตอบกลับเป็น JSON หรือไม่. หากผู้ใช้คาดหวังจะได้รับ JSON (เช่นในกรณีที่เป็น API Request) ฟังก์ชันจะไม่ทำการ Redirect แต่จะปล่อยให้การตรวจสอบดำเนินการต่อไปและอาจส่ง Response กลับเป็น JSON ที่ระบุว่าไม่ได้รับการ Authenticated.return route('login');
: หาก Request ที่เข้ามาไม่คาดหวังจะได้รับการตอบกลับเป็น JSON (เช่นเป็น Request จากเว็บแอปพลิเคชัน), ผู้ใช้จะถูก Redirect ไปยังหน้าล็อกอิน โดยใช้เส้นทางที่กำหนดในชื่อ Route ว่า'login'
.
- ฟังก์ชัน
สรุป
Controller ใน Laravel เป็นส่วนที่ใช้ในการจัดการกับ logic ของแอปพลิเคชัน และทำหน้าที่เชื่อมโยงระหว่าง Model, View, และ Request ต่าง ๆ ที่เข้ามา
สนใจจ้างพัฒนาระบบ เขียนระบบ
ทำเว็บไซต์ รับสอนเขียนโปรแกรม
inbox มาที่เพจ หรือติดต่อ 098-373-8651
ช่องทางการชำระเงิน
เงินสด หรือ e-banking
ธนาคารกสิกรไทย
เลขบัญชี : 0951168564
ชื่อบัญชี : นายวัยวุฒิ ชุมเมืองปัก