เอาหล่ะครับวันนี้ก็ยังคงอยู่ในเรื่องราวของ Laravel5.3 นะครับ ซึ่งในตอนนี้ก็ว่ากันด้วยเรื่องของ Hook หรือถ้าในทาง Laravel เค้าจะเรียกตัวนี้น่า Event ซึ่งสิ่งที่ผมหลายถึงนั้นก็คือคำสั่งที่จะทำเมื่อเกิดการทำอะไรสักอย่างนึงกับข้อมูล เช่น
เมื่อสร้างผู้ใช้งานเสร็จในทำการส่ง Email ไปยืนยันการสมัคร
ก่อนจะทำการสร้างผู้ใช้ให้ทำการเก็บ log เอาไว้ว่ามี IP นี้นะกำลังพยายามบันทึกข้อมูลเข้าสู่ Database อะไรแน่ ๆ นี้
Events ต่าง ๆ ที่ควรรู้
โดยวิธีการทำจะมีอยู่ 2 วิธีด้วยกัน โดยในบทความนี้จะนำเสนอเพียงวิธีเดียวก่อน* แต่ก่อนอื่นเลยเรามาทำความรู้จัก Event ที่มีกันก่อนนะครับ โดย Event ทั้งหมดจะมีตามนี้
creating : ทำก่อนสร้างข้อมูล
created : ทำหลังสร้างข้อมูล
updating : ทำก่อนแก้ไขข้อมูล
updated : ทำหลังแก้ไขข้อมูล
saving : ทำก่อนบันทึกข้อมูล ( เหมือนกับ updateing )
saved : ทำหลังบันทึกข้อมูล ( เหมือนกับ updated )
deleting : ทำก่อนลบข้อมูล
deleted : ทำหลังลบข้อมูล
restoring : ทำก่อนกู้คืนข้อมูลจากการลบแบบ Soft Delete
restored : ทำหลังกูคืนข้อมูลจากการลบแบบ Soft Delete
เมื่อเข้าใจประเภทของ Events ต่าง ๆ แล้วทีนี้มาถึงขั้นตอนการนำมาใช้งานละ
วิธีการใช้งาน
ในกรณีนี้จะทำการเพิ่มการทำงานสำหรับเพิ่ม Event สำหรับเพิ่มคำว่า “คุง” ต่อท้ายให้แก้ User เมื่อมีการสร้าง User ขึ้นมาใหม่ เอาหล่ะเริ่มกันเลย
ให้เปิดไฟล์ root-project/app/Providers/AppServiceProvider.php ขึ้นมาเพื่อแก้ไข เราจะเห็นข้อมูลประมาณนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { // } /** * Register any application services. * * @return void */ public function register() { // } } |
โดยให้แก้ไขไฟล์ให้เป็นดังนี้ครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\User; use App\Observer\UserObserver; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { // User::observe(UserObserver::class); User::creating(function ($user) { $user->name = $user->name . "คุง"; }); } /** * Register any application services. * * @return void */ public function register() { // } } |
ทดสอบ
เอาหล่ะผมจะลองทดสอบจาก Laravel5.3 ที่เพิ่มสร้างใหม่เลยให้ดูกันนะครับ จะเห็นว่าข้อมูลที่นำเข้าจะเป็นชื่อผมเฉย ๆ ไม่มีคำลงท้ายอะไรเลยแม้แต่น้อย เอาหล่ะกด Register แล้วหล่ะน้าาาาาาา
ตูมมมมมม !! เอาหล่ะผลลัพธ์ออกมาแล้วครับนั้นก็คือ ชื่อผมมี “คุง” ต่อท้ายเมื่อมีการสร้าง User ใหม่อย่างที่เราแก้ไขไปจริง ๆ เท่านี้ก็เป็นอันสำเร็จเสร็จสิ้นกระบวนการแล้วครับ :))
เอาหล่ะครับก็จบไปแล้วนะครับกับการสร้าง Event หรือ ในที่อื่น ๆ เค้าจะเรียกกันว่า Hook นะครับ หวังว่าคงเป็นประโยชน์ไม่มากก็น้อย (นั้นสิ พูดทำไม) เอาเป็นว่าผมขอจบไว้เพียงเท่านี้นะครับ แล้วเจอกันใหม่บทความถัดไป
หรือ ใครมีวิธีสร้างโดยใช้ Observer ก็ช่วยแนะนำกันมาบ้างก็ดีนะครับ :))
หมายเหตุ
* เพราะอีกวิธีนึงผมลองแล้วแต่มันไม่ได้ผลเลยต้องขอละไว้ก่อน ถ้าได้แล้วจะมาเขียนบทความเพิ่มเติ่มให้นะครับ :))