การพัฒนา Ajax ใน extension ของเราเอง บน phpBB3.1

jQuery & Ajax Knowledge ความรู้เกี่ยวกับ Javascript , jQuery และ Ajax

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

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41374
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

การพัฒนา Ajax ใน extension ของเราเอง บน phpBB3.1

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

แปะไว้ก่อน ไว้ว่างๆ จะมาสรุปให้
https://wiki.phpbb.com/Using_AJAX

แต่ ใครสรุปได้ทำเป็นแล้ว แชร์ด้วยครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 28508
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

Re: การพัฒนา Ajax ใน extension ของเราเอง บน phpBB3.1

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

เบื้องต้นที่ได้ลองศึกษาค่ะ

1. มี controller เพื่อเป็นตัวส่งข้อมูลจาก server ไปยัง เพจ โดยกำหนด routing เเละ services ปกติ
2. ไฟล์ที่จะส่ง link เรียก ไฟล์ controller ตาม path ที่กำหนดใน routing ในตัวอย่างจะสร้าง link จาก event
3. ส่วนที่จะเอาไปใช้งาน JS

ก่อนที่จะมี ส่วนทีท 1 ต้องกำหนด routing เเละ services ไปหา controller ก่อน
config ---> routing.yml

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

aaa_m_button_like_controller:
    path: /button_like/{action}/{post}
    defaults: { _controller: aaa.m_button_like.ajaxlike:base }
    requirements:
        post: \d+
config ---> services.yml

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

    aaa.m_button_like.controller:
        class: aaa\m_button_like\controller\ajaxlike
        arguments:
            - @config
            - @controller.helper
            - @template
            - @user
            - @dbal.conn
            - @auth
            - @cache
            - @dispatcher
            - @request
            - %core.root_path%
            - %core.php_ext%

ส่วนต่อไป controller ที่จะให้ส่งค่าจาก server ออกมา ในตัวอย่างสมมุติให้ส่งค่าออกมาเป็น json

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

<?php
    namespace aaa\m_button_like\controller;   

    class ajaxlike 
    { 
        /* ...
       */
       public function base($action, $post)
       {  
           switch ($action)
        {   
                        
            case 'control_like':
                                $json_response = new \phpbb\json_response;
                                $json_response->send(array(
                                        'name' => 'thatsawan',
                                        'Tel'    => 111111,
                                ));
            break;
        }
       }       
    }
?>
สมมุติค่าออกมา สมุมติว่าเรา query มาได้
'name' => 'thatsawan',
'Tel' => 111111,

ส่วนที่ 2 สร้าง link

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

 public function viewtopic_modify_post_row($event){
            $post_row = $event['post_row'];
            $post_row['POST_ADD_LIKE_URL'] = $this->helper->route('aaa_m_button_like_controller', array('action' => 'control_like', 'post' =>$event['row']['post_id']));
            $event['post_row'] = $post_row;
 
ส่งค่ายังเทมเพลต เอา link ไปแปะ ใน เทมเพลต

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

<div  class="button_like">
    <a href="{postrow.POST_ADD_LIKE_URL}" data-ajax="button_like">TEST</a>
</div>
2015-07-07_1-42-19.png
2015-07-07_1-42-19.png (24.45 KiB) Viewed 1208 times
2015-07-07_1-43-00.png
2015-07-07_1-43-00.png (33.03 KiB) Viewed 1208 times
ส่วนสุดท้าย เอาไปว่างไว้ใน overall_footer_body_after.html

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

<script>
(function($) { 

"use strict";

phpbb.addAjaxCallback('button_like', function(data) {
    
   alert(data.name);
   
});

})(jQuery); 
</script>
ผลที่ได้ เมื่อคลิก
2015-07-07_1-43-26.png
2015-07-07_1-43-26.png (36.77 KiB) Viewed 1208 times
2015-07-07_1-43-36.png
2015-07-07_1-43-36.png (24.65 KiB) Viewed 1208 times

คร่าวหน้าจะนำตัวอย่างการประยุกต์ใช้มาอธิบายให้ละเอียดนะคะ บ้างอย่างยังไม่ค่อยเข้าใจ ค่ะ
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

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

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