วิธีการแการแก้ไขข้อมูลโพสต์ ในระหว่างขั้นตอนการกดโพสต์ ของ phpbb

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Ittichai_chupol
PHP VIP Members
PHP VIP Members
โพสต์: 5410
ลงทะเบียนเมื่อ: 19/09/2018 10:33 am

วิธีการแการแก้ไขข้อมูลโพสต์ ในระหว่างขั้นตอนการกดโพสต์ ของ phpbb

โพสต์ที่ยังไม่ได้อ่าน โดย Ittichai_chupol »

ในการสร้างโพสต์ของ phpbb แต่ละครั่งนั้นจะมี การเก็บข้อมูล ลงในฐานข้อมูลและตัวแปรต่างๆ ในรูปแบบของ array เพื่อให้่ายและสะดวกต่อกการนำมาใช้งาน โดยทั้งนี้ในการโพสต์ ก็จะมี ข้อมูลเหล่านี้ในรูปแบบที่เรียกว่า Event โดยจะมีการแบ่งออกเป็นส่วนๆ ตามการทำงานของเว็บบอร์ด ทั้งการกระทำก่อนโพสต์ ระหว่างโพสต์ และผลลัพธ์หลังจากการโพสต์ไปแล้ว โดยผู้พัฒนา สามารถที่จะเลือก Event มาเพื่อใช้สำหรับการพัฒนา Extension ได้ตามความเหมาะสมตามความต้องการของผุ้ใช้งานได้โดยไม่ยุ่งยากแหละเพื่อไม่ให้มีผลกระทบตอข้อมูลจริงๆ

โดยในบรรดา Event ของเว็บบอร์ด phpbb มีอยู่อย่างมากมาย โดยจะเป็น Event ที่สามารถแสดงออกมาให้เห็นทางหน้าจอโดยต้อง กับ Event ที่จะทำงานเพียงแค่ช่วงเวลาหนึ่งเท่านั้น ซึ่งจำเป็นที่จะต้องทำการดัก Exit การทำงานก่อนี่จะเสร็จสิ้นถึงจะสามารถเห็นผลลัพธ์หรือเห็นข้อมูลที่ถูกจัดเก็บอยู่ได้ โดยในบรรดา Event เหล่านี้ก็จะมี Event ที่ชื่อว่า posting_modify_submit_post_after ซึ่งจะทำงานในระหว่างที่มีการโพสต์เท่านั้น แต่ถ้าหากผู้พัฒนาต้องการที่จะนำ ข้อมูลจาก posting_modify_submit_post_after มาใช้งาน หรือ ปรับเปลี่ยนก็สามารถทำได้ดังนี้


1.เรียกเรียก Event ขึ้นมาใช้งาน

โค้ด: เลือกทั้งหมด

static public function getSubscribedEvents() {
        return array(

            'core.posting_modify_submit_post_after' => 'posting_modify_submit_post_after',
          
        );
    }


2.ตัวอย่างการใช้งาน : เป็นการดึงข้อมูลจากการโพสต์ เพื่อบันทึกข้อมูลการโพสต์นั้น ลงในฐานข้อมูลที่สร้างขึ้นมาใหม่

โค้ด: เลือกทั้งหมด

  public function posting_modify_submit_post_after($event) {
                            $sql_ary = array(
                            'anonymous_code' => 'A' . str_pad($event['data']['poster_id'], $this->config['m_anonymous_post_name'] - 1, "0", STR_PAD_BOTH),
                            'user_id' => $this->user->data['user_id'], //ดึงข้อมูล id ของผู้โพสต์
                            'forum_id' => $event['data']['forum_id'], //ดึงข้อมูล forum_id ของการโพสต์
                            'post_id' => $event['data']['post_id'],//ดึงข้อมูล post_id ของการโพสต์
                            'topic_id' => $event['data']['topic_id'], //ดึงข้อมูล topic_id ของการโพสต์
                        );

                    $sql = 'INSERT INTO ' . $this->table_prefix . 'm_anonymous' . ' ' . $this->db->sql_build_array('INSERT', $sql_ary);
                    $this->db->sql_query($sql); //บันทึกข้อมูลลงฐานข้อมูล
         
    }
ผลลัพธ์ที่ได้คือการที่ในฐานข้อมูลจะมีการบันทึกข้อมูลข้างต้น ลงในฐานข้อมูล
Selection_999(2302).png
Selection_999(2302).png (41.78 KiB) Viewed 835 times
บทความที่เกี่ยวข้อง
การสร้าง Extension ใน phpbb
การสร้าง controller สำหรับ phpbb
Event listenner - เขียน Extension บน phpBB 3.1
ขอให้วันนี้เป็นวันที่ดี
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 34