ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

สำหรับการพัฒนาส่วนเสริมที่เป็น Plugin ใน MooZiiCart หลังจากที่ศึกษาแนวทางและโครงสร้างของไฟล์จากบทความ แนวทางการพัฒนาส่วนเสริมของ MooZiiCart ไปแล้วนั้น น่าจะพอเข้าใจเรื่องการทำงานของ Plugin ว่ามันจะทำงานโดยอาศัย Event ต่างๆ ที่ถูกสร้างขึ้นมาเตรียมไว้ในส่วนการทำงานที่สำคัญ เช่น การดึงข้อมูล การบันทึกข้อมูล การลบข้อมูล หรืออื่นๆ อีกมากมาย เพราะฉะนั้นเมื่อเราต้องการที่จะพัฒนาส่วนเสริมเข้าไปทำงานก็จำเป็นต้องทราบว่ามีชื่อ Event อะไรบ้าง ในบทความนี้จะขอแนะนำวิธีการหาชื่อ Event ของ MooZiiCart ด้วยตัวเองกันครับ

 

ก่อนที่จะเริ่มเข้าไปเปิดไฟล์ของ MooZiiCart แล้วค้นหา Event จะขออธิบายเพิ่มเติมเกี่ยวกับโครงสร้างไฟล์ของ MooZiiCart ก่อน โดย MooZiiCart เป็น Component ที่พัฒนาบน Joomla Framework โดยการเขียนจะเป็นรูปแบบ MVC เพราะฉะนั้นแน่นอนว่าจะต้องมีโฟลเดอร์ controllers models และ views เป็นโฟลเดอร์ที่เก็บไฟล์ส่วนที่ทำงานหลักๆ ซึ่ง Event ส่วนใหญ่ก็จะถูกประกาศไว้ในไฟล์เหล่านี้

 

วิธีการหาชื่อ Events ของ MooZiiCart

สามารถเปิดไฟล์ในโฟลเดอร์ controllers กับ models ของส่วนที่ต้องการขึ้นมาหาชื่อ Event ได้ แต่หากไม่แน่ใจว่าต้องเปิดไฟล์ชื่ออะไรในโฟลเดอร์ ให้ลองสังเกตุ URL ในหน้าที่ต้องการหา Event เช่น ในหน้าหมวดหมู่สินค้า ตรง URL จะมี controller=categories ซึ่งชื่อไฟล์ในโฟลเดอร์ controllers ก็คือ categories.php นั่นเอง

 

การดูชื่อไฟล์จาก URL
การดูชื่อไฟล์จาก URL

 

เปิดไฟล์ administrator/components/com_mooziicart/controllers/categories.php ขึ้นมา และค้นหาคำว่า "trigger" (ในตัวอย่างใช้ IDE เป็น Netbeans)

 

ค้นหา trigger ในไฟล์ categories.php
ค้นหา trigger ในไฟล์ categories.php

 

ในไฟล์ categories.php นี้จะมี Event อยู่ 2 ตัว ที่เราสามารถเรียกใช้ได้ คือ onBeforeDisplayListCategoryView เป็นการทำงานก่อนแสดงรายการหมวดหมู่สินค้า กับ onBeforeEditCategories เป็นการทำงานก่อนแสดงฟอร์มหมวดหมู่สินค้า หากต้องการเรียกใช้ก็สามารถนำชื่อ Event ทั้งสองไปใช้สร้างเป็นชื่อ function ใน Plugin ได้ ส่วน Parameters ที่ต้องใส่ใน function ก็ดูจากค่าที่อยู่ใน array

 

ตัวอย่างการสร้าง function

ตัวอย่างที่ 1

$dispatcher->trigger('onBeforeEditCategories', array (&$view));

จะได้เป็น

public function onBeforeDisplayListCategoryView(&$view)
{
	// coding...
}

 

ตัวอย่างที่ 2

$dispatcher->trigger('onAfterSaveCategoryImage', array(&$post, &$category_image, &$path_full, &$path_thumb));

จะได้เป็น

public function onAfterSaveCategoryImage(&$post, &$category_image, &$path_full, &$path_thumb)
{
	// coding...
}

 

สำหรับทั้ง 2 ตัวอย่าง น่าจะพอทำให้เห็นภาพและเข้าใจวิธีการสร้าง function ของ Event ต่างๆ ได้มากขึ้น ในส่วนของ Parameters จำเป็นต้องประกาศให้เท่ากันไม่ว่าจะได้ใช้หรือไม่ได้ใช้ก็ตาม และสังเกตว่าตัวแปรส่วนใหญ่จะเป็นตัวแปรแบบ Passing by Reference เนื่องจาก Event จะไม่ได้กำหนดให้รับค่ากลับออกไป แต่จะใช้วิธีการปรับเปลี่ยนค่าของตัวแปรโดยตรงแทน เพราะฉะนั้นในส่วนนี้อาจจะต้องระมัดระวังการใช้งานหรือเอาค่าทับตัวแปรต่างๆ เพราะตัวแปรเหล่านี้อาจจะยังต้องนำไปใช้ในส่วนถัดไปอีก ซึ่งถ้ามีการทับค่าที่สำคัญอาจจะทำให้เกิด Error ตามมาได้ สำหรับเรื่องวิธีการหาชื่อ Events ของ MooZiiCart สำหรับเรียกใช้ในส่วนเสริมก็จะประมาณนี้ สามารถติดตามวิธีพัฒนาเพิ่มเติมได้จากบทความต่อไป

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ทริป กางเต็นท์ ใกล้กรุงเทพ
โดย milk2533 จ 23 พ.ย. 2020 1:04 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
12
จ 23 พ.ย. 2020 1:04 pm โดย milk2533
- ให้เขียนประวัติ และ Job description ที่เคยทำมาแต่ละบริษัท โดยระบุประเภทธุรกิจที่เคยทำมา
โดย milk2533 จ 23 พ.ย. 2020 11:26 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
1
13
จ 23 พ.ย. 2020 4:34 pm โดย milk2533
list ความรู้ที่มี ว่าเคยเรียน หรือ เคยทำอะไรมาบ้าง
โดย milk2533 จ 23 พ.ย. 2020 11:26 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
3
22
จ 23 พ.ย. 2020 7:03 pm โดย milk2533
Work's on Hand กฤตวรรณ อาทิตย์ตั้ง M115
โดย milk2533 จ 23 พ.ย. 2020 11:24 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
0
3
จ 23 พ.ย. 2020 11:24 am โดย milk2533
note ส่วนตัว
โดย milk2533 จ 23 พ.ย. 2020 11:23 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
0
1
จ 23 พ.ย. 2020 11:23 am โดย milk2533
งานประจำวันที่ 23 พฤศจิกายน 2563
โดย milk2533 จ 23 พ.ย. 2020 11:21 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
2
28
จ 23 พ.ย. 2020 7:08 pm โดย milk2533
คำสั่งค้นหาไฟล์ จากขนาดของไฟล์
โดย mindphp จ 23 พ.ย. 2020 12:07 am บอร์ด Linux - Web Server
0
7
จ 23 พ.ย. 2020 12:07 am โดย mindphp
แก้ป้ญหา ภาษาไทย Error ใน Flask template ninja2 Error UnicodeDecodeError UnicodeDecodeError: 'ascii' codec can't decode
โดย mindphp ส 21 พ.ย. 2020 10:38 pm บอร์ด Python Knowledge
1
17
จ 23 พ.ย. 2020 12:22 pm โดย samay123