วิธีการดึง parameter มาใช้ใน event

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

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

Post Reply
offing
PHP VIP Members
PHP VIP Members
Posts: 1527
Joined: 18/08/2014 10:01 am

วิธีการดึง parameter มาใช้ใน event

Post by offing » 02/12/2014 2:54 pm

วิธีการดึง parameter มาใช้ใน event ที่มีการประกาศ argument ไว้ให้จาก code standard

1.เราต้องรู้ก่อนจะใช้ event ไหน
2.นำ event ไปเชคใน https://wiki.phpbb.com/Event_List#core. ... c_ids_data
3.ดู Argument ที่มีให้ตามภาพ
1.gif
1.gif (5.82 KiB) Viewed 236 times
4.ไปประกาศ argument เก็บไว้ในตัวแปรในไฟล์ event

นำไฟล์นี้ไปไว้ใน

Code: Select all

$sql_ary = $event['sql_ary'];
            $sql_approved = $event['sql_approved'];
            $sql_where = $event['sql_where'];
            $sql_limit_time = $event['sql_limit_time'];
            $store_reverse = $event['store_reverse'];
            $sql_sort_order = $event['sql_sort_order'];

Code: Select all

 public function viewforum_get_topic_ids_data($event) {

            $sql_ary = $event['sql_ary'];
            $sql_approved = $event['sql_approved'];
            $sql_where = $event['sql_where'];
            $sql_limit_time = $event['sql_limit_time'];
            $store_reverse = $event['store_reverse'];
            $sql_sort_order = $event['sql_sort_order'];

          $sql_ary = array(
	'5555555555'	=> 't.topic_id',
	'FROM'		=> array(
		TOPICS_TABLE => 't',
	),
	'WHERE'		=> "$sql_where
		AND t.topic_type IN (" . POST_NORMAL . ', ' . POST_STICKY . ")
		$sql_approved
		$sql_limit_time",
	'ORDER_BY'	=> 't.topic_type ' . ((!$store_reverse) ? 'DESC' : 'ASC') . ', ' . $sql_sort_order,
);
           $event['sql_ary'] = $sql_ary;
    }
ถ้าเราไม่ประกาศตัวแปรจะเป็นค่าว่าง
code ที่เขียนไว้ใน event นี้จะแทนที่ code เก่าต่อเมื่อมีการ extract แล้ว
code หน้า php

Code: Select all

/**
* Event to modify the SQL query before the topic ids data is retrieved
*
* @event core.viewforum_get_topic_ids_data
* @var	array	sql_ary			SQL query array to get the topic ids data
* @var	string	sql_approved	Topic visibility SQL string
* @var	int		sql_limit		Number of records to select
* @var	string	sql_limit_time	SQL string to limit topic_last_post_time data
* @var	array	sql_sort_order	SQL sorting string
* @var	int		sql_start		Offset point to start selection from
* @var	string	sql_where		SQL WHERE clause string
* @var	bool	store_reverse	Flag indicating if we select from the late pages
*
* @since 3.1.0-RC4
*/
print_r($sql_ary);echo "<br><br>";
$vars = array(
	'sql_ary',
	'sql_approved',
	'sql_limit',
	'sql_limit_time',
	'sql_sort_order',
	'sql_start',
	'sql_where',
	'store_reverse',
);
extract($phpbb_dispatcher->trigger_event('core.viewforum_get_topic_ids_data', compact($vars)));
print_r($sql_ary);
exit;
output
ก่อน
Array ( [SELECT] => t.topic_id [FROM] => Array ( [phpbb_topics] => t ) [WHERE] => t.forum_id = 2 AND t.topic_type IN (0, 1) AND 1 = 1 [ORDER_BY] => t.topic_type DESC, t.topic_last_post_time DESC, t.topic_last_post_id DESC )

หลัง
Array ( [5555555555] => t.topic_id [FROM] => Array ( [phpbb_topics] => t ) [WHERE] => t.forum_id = 2 AND t.topic_type IN (0, 1) AND 1 = 1 [ORDER_BY] => t.topic_type DESC, t.topic_last_post_time DESC, t.topic_last_post_id DESC )

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “PHP Knowledge”

Who is online

Users browsing this forum: No registered users and 4 guests