Laravel การตรวจสอบข้อมูลก่อนบันทึกด้วย Validation

Laravel Validation ตรวจสอบข้อมูล

สวัสดีครับ วันนี้ผมมาแนะนำการใช้งาน Validation ของ Laravel ซึ่งใช้งานได้ง่ายมากๆ โดยประโยชน์ของ Laravel validation นั้นเอาไว้สำหรับตรวจสอบข้อมูลว่าถูกต้องตามที่เราต้องการหรือไม่ ก่อนที่จะบันทึกลงฐานข้อมูล(Database) ทำให้เราสามารถจัดเก็บข้อมูลถูกต้องตามความต้องการเช่น เราต้องการเก็บเบอร์โทรศัพท์ลงฐานข้อมูล ถ้าเราไม่ได้ใช้ Laravel validation ข้อมูลที่ผู้ใช้งานระบบจะกรอกมาจะเป็น 081-1448181 หรือ 02-2330-343 หรือ 099-234-2421 ซึ่งจริงๆแล้วเราไม่ได้ต้องการ ขีดหรือ (-) เลย เราแค่ต้องการให้ผู้ใช้งานกรอกแค่ตัวเลข เช่น 0811448181 เท่านั้น ดังนั้นเราจึงจำเป็นต้องใช้ Laravel validation นั้นเอง

Laravel Validation เป็น แพคเก็จที่ติดมาตอนติดตั้ง Laravel เลยเราไม่ต้องไปติดตั้งเพิ่ม ในการเรียนรู้การใช้งาน Laravel Validation นั้นเรียนรู้ง่าย ไม่ซับซ้อน ใช้งานไม่ยาก เพียงเรากำหนดเงื่อนไข ที่ต้องการ เวลา ผู้ใช้กรอกข้อมูลแล้ว submit form มา จังหวะนี้ ที่ Validation ทำการตรวจสอบ ถ้าหากว่าข้อมูลที่ตรวจสอบไม่ถูกต้อง ก็จะส่ง ข้อความมาหาผู้ใช้ แสดงผลที่หน้าฟอร์มทันที

เริ่มต้นใช้งาน โดยเริ่มจากทำ ตัวอย่างง่ายๆ ระบบ เพิ่มหนังสือ ครับ

#กำหนด Routes (เส้นทาง)

เริ่มแรก ให้เรา กำหนด routes ที่ routes/web.php

#สร้าง Validation

ให้เราทำการสร้าง validation สำหรับตรวจสอบข้อมูลโดนใช้คำสั่งใน command
php artisan make:request BookSave
หรือจะสร้างไฟล์ใน App/http/requests/BookSave.php ก็ได้

นำโค๊ดด้านล่างไปวางไว้ในไฟล์ BookSave.php

อธิบายโค๊ด
บรรทัดที่ 14-17 กรณีที่ไม่ต้องการตรวจสอบสิทธิ์การเข้าถึงเช่นผู้ใช้คนนี้สามารถ บันทึกข้อมูล หรือแก้ไขข้อมูลได้ ให้เราคืนค่าเป็น true ตามตัวอย่างได้เลย
บรรทัดที่ 24-33 เป็นการกำหนดการตรวจสอบข้อมูลที่ส่งมาจากฟอร์ม
บรรทัดที่ 27 ตรวจสอบว่าชื่อจริง โดยอ้างอิงจาก หน้าฟอร์ม name=”firstname” ห้ามว่าง
บรรทัดที่ 28 ตรวจสอบนามสกุล ห้ามว่าง อ้างอิงหลักการเดียวกับบรรทัดบน เช่นกันคือ lastname
บรรทัดที่ 29 ตรวจสอบ username ห้ามว่าง
บรรทัดที่ 30 ตรวจสอบ email ห้ามว่างและ รูปแบบต้องเป็นอีเมล์ เช่น sample@mail.com หรือ test@hotmail.com
บรรทัดที่ 31 ตรวจสอบ เบอร์โทร ห้ามว่าง, ต้องเป็นตัวเลขเท่านั้น และมีจำนวนตัวอักษรตั้งแต่ 8 ตัวถึง 15 ตัว

บรรทัดที่ 35-47 เป็นการกำหนดข้อความแสดงผลถ้าตรวจสอบแล้วไม่ผ่าน ตรงนี้ถ้าเราไม่มีฟังก์ชั่น messages() นี้ ระบบจะไปเอาข้อความ Default จากไฟล์ resources/lang/en/validation.php หรือ resources/lang/xx/validation.php ตาม local ที่เราตั้งค่าครับ (ปล. เราสามารถ แก้ไขไฟล์แสดงข้อความ error ได้เหมือนกัน)

เราสามารถดู rule เพิ่มเติมนอกจากตัวอย่าง ได้ซึ่งมีให้ใช้งานในหลากหลายงานเยอะมาก
https://laravel.com/docs/9.x/validation#available-validation-rules

#สร้าง Controller

ให้เราทำการสร้าง controller ชื่อ BookController จะสร้างโดยใช้คำสั่งใน command
php artisan make:controller BookController
หรือจะสร้างไฟล์ใน App/http/controllers/BookController.php ก็ได้เช่นกัน
แล้วให้นำโค๊ดด้านล่างไปวางไว้

อธิบายโค๊ด
บรรทัด 5 เรียกใช้ BookSave Validate โดยใช้คำสั่ง use App\Http\Requests\BookSave
บรรทัดที่ 9-12 ฟังก์ชั่น create() แสดงผลหน้าฟอร์ม
บรรทัดที่ 14-17 ฟังก์ชั่น store() บันทึกข้อมูลฟอร์ม เมื่อฟอร์ม Submit มา จะผ่าน BookSave ก่อนเข้า Controller Method
บรรทัดที่ 19-22 ฟังก์ชั่น saveSuccess() แสดงหน้าจอเมื่อบันทึกข้อมูลสำเร็จ

#สร้าง View

– หน้าจอฟอร์ม create.blade.php
ให้เราสร้างไฟล์ view ที่ resources/views/book/create.blade.php (ถ้าไม่มีโฟล์เดอร์ book ให้สร้างขึ้นมาเลยครับ) แล้วนำโค๊ดด้านล่างไปวางไว้

อธิบายโค๊ด
บรรทัดที่ 72-130 เป็นฟอร์ม ที่มีช่องกรอกข้อมูล
จะอธิบายที่ช่อง firstname ที่บรรทัด 76 โดยสิ่งที่อ้างอิงกันคือ name=”firstname” จะถูกไปอ้างอิงในไฟล์ BookSave.php ตอนทำ rule นั้นเอง และ เราได้กำหนด class is-invalid ให้กับช่องนี้กรณีมี error ตรวจสอบไม่ผ่าน ให้มี is-invalid (class ที่แสดงกรอบสีแดงพร้อม ไอคอนตกใจ) และ แสดงข้อความหลักจากกด submit ไปแล้วเพื่อไม่ให้ค่าหายไปโดยใช้ old ซึ่งเป็น session แบบ flash ที่ใช้เพียงครั้งเดียว

ส่วนช่องอื่นๆ ก็ใช้หลักการเดียว เพียงแต่เปลี่ยนชื่อฟิล์ด แค่นั้นครับ

– หน้าจอแสดงผลลัพท์ save_success.blade.php
ให้เราสร้างไฟล์ view ที่ resources/views/book/save_success.blade.php แล้วนำโค๊ดด้านล่างไปวางไว้

อธิบายโค๊ด
โค๊ดส่วนนี้การทำงานคือแสดงผลลัพท์หน้าจออย่างเดียว ให้ผู้ใช้เห็นว่า บันทึกข้อมูลผ่านการตรวจสอบแล้ว

มาดูผลลัพท์กันครับ

Laravel validation ตรวจสอบข้อมูลก่อนบันทึกอย่างง่าย

สำหรับการใช้งาน Laravel validation ก็ประมาณนี้ ซึ่งจริงๆมี rule ที่เยอะแยะมากและช่วยเราทำให้เราลดเวลาในการเขียนเองเยอะไปมาก เดี่ยวไว้คราวหน้าจะมาแนะนำทริปใหม่ๆ เพิ่มเติม สำหรับบทความนี้ก็มีเพียงเท่านี้ ขอบคุณครับ

หากต้องการดาวน์โหลด source code Laravel Validation ของตัวอย่างนี้ทั้งหมดสามารถ inbox มาขอได้ที่เพจ
https://www.facebook.com/itoffside
กติกาคือ เพียงแค่กดไลท์เพจ แล้วแคปเจอร์กดไลท์ แล้วส่ง inbox มาหาเราทางเราจะส่งลิงค์ดาวน์โหลดไปให้

You May Also Like

About the Author: benext

โปรแกรมเมอร์ ติดต่อ : itoffside@hotmail.com
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments