코드이그나이터 기반 PHP 오픈소스 게시판 : 씨아이보드

Event Trigger 기능 추가

  • 관리자
  • 5
  • 8,901
  • 글주소
  • 11-03

안녕하세요

 

이번 씨아이보드에 Event Trigger 기능이 추가되었습니다. controller 의 파일들의 대부분에 필요하다고 생각되는 위치에 Trigger 기능을 추가하였습니다.

 

따라서 앞으로 Trigger 기능을 활용하면 배포되는 원본 controller 를 변경하지 않고 원하는 커스터마이징 함수를 추가할 수 있습니다.

 

https://github.com/nathanmac/CodeIgniter-Events 를 활용하였습니다.

 

사용방법을 설명하면, 예를 들어 contoller/Main.php 파일을 보시면 

[code]

// 이벤트 라이브러리를 로딩합니다

 

$eventname = 'event_main_index';

 

$this->load->event($eventname);

 

$view = array();

 

$view['view'] = array();

 

// 이벤트가 존재하면 실행합니다

$view['view']['event']['before'] = Events::trigger('before', $eventname);

[/code] 

부분이 있습니다. 이를 해석하자면, event_main_index 라는 이벤트를 로드하고, 그 안에 before 라는 이름으로 등록된 함수들을 순차적으로 실행합니다.

 

application/event/Event_main_index.php 파일을 생성하고 아래 내용을 입력합니다

[code] 

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

 

class Event_main_index extends CI_Controller

{

 

private $CI;

 

function __construct()

{

$this->CI = & get_instance();

Events::register('before', array($this, 'alert'));

Events::register('before', array($this, 'alert2'));

}

public function alert() {

$result = array();

 

echo '<script>alert("이벤트 실행");</script>';

 

$result['result'] = 'alert 함수를 통해 담겨진 내용입니다';

 

return $result;

}

 

public function alert2() {

$result = array();

 

echo '<script>alert("이벤트 실행2");</script>';

 

$result['result'] = 'alert2 함수를 통해 담겨진 내용입니다';

 

return $result;

}

}

[/code] 

위와 같이 저장한 후에 홈페이지를 브라우저에서 실행하여 보면, 2번의 alert 가 뜨는 것을 확인하실 수 있습니다. 반환형은 반드시 array 형으로 return 하셔야 합니다. return 할 내용이 없다 할지라도 빈 array 라도 return 해주시면 됩니다.

 

감사합니다.