พื้นฐานการเขียน Controllers ใน Laravel และการใช้งาน Middleware

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

  • 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 เช่น

  • การใช้ Middleware auth จะทำให้การเข้าถึงฟังก์ชันใน controller นี้ต้องผ่านการยืนยันตัวตนก่อน
  • Middleware ใน Laravel เป็นชั้นการทำงานที่อยู่ระหว่างการรับ Request และการส่ง Response ของแอปพลิเคชัน โดย Middleware สามารถใช้เพื่อจัดการกับการทำงานต่างๆ ก่อนหรือหลังที่ Request จะเข้าสู่ Controller หรือ View เช่น การตรวจสอบสิทธิ์การเข้าถึง, การจัดการ session, หรือการบันทึก log
  • คุณสามารถสร้าง Middleware ใหม่ได้โดยใช้คำสั่ง artisan เช่น
    • php artisan make:middleware middleware

  • ฟังก์ชัน 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 ต่าง ๆ ที่เข้ามา

 

 

 

ติดต่อ สอบถามข้อมูลเพิ่มเติม