เนื่องจากใช้ฟังก์ชั่น validate ตาม code ข้างล่าง
public function update()
$this->validate($this->request, [
'ids' => 'required|array',
'ids.*' => 'required|integer',
]);
return 'test';
}
ทำให้เวลาที่ Validate request ไม่ผ่าน มันจะ throw ValidationException โดยอัตโนมัติ ซึ่งวิธีการ Handle มี 3 วิธีดังนี้
- ใช้
try...catch
ครอบ code ส่วน validation เพื่อ handle ValidationException ที่เกิดขึ้นในแต่ละ function ของ controller
- เพิ่มการ handle ใน Handler class เพื่อเป็น handle กลางสำหรับ ValidationException ที่ไม่ถูก handle จากข้อแรก
- ข้ามข้อ 1 และ 2 แล้วนำ ValidationException มาแสดงผลบนหน้าเว็บ เนื่องจากเวลาเกิด ValidationException ระบบจะ redirect กลับไปหน้าก่อนหน้าพร้อมกับตัวแปรชื่อ $errors
สำหรับวิธีการแสดง Validation Error บนหน้าเว็บ ให้ใส่ code ด้านล่างนี้ในส่วนของ Blade template
@foreach ($errors->all() as $error)
<div>{{$error}}</div>
@endforeach
หมายเหตุ ตัวแปร
$errors ข้างต้นไม่สามารถตรวจสอบได้ โดยการ inspect ดู Network ของ browser และการเรียกดูจาก request ใน controller
No comments:
Post a Comment