Event Trigger 기능 추가
- 관리자
- 5
- 9,112
- 글주소
- 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 해주시면 됩니다.
감사합니다.