모듈 개발시 사용할수 있는 이벤트 핸들러들을 확인하는 방법을 알고 싶습니다.
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 8.3 |
안녕하세요. 모듈 개발을 해보고 있습니다. 모듈 작동 매커니즘은 어느정도 이해되었고, 다른 모듈과 연동할 경우 어디에 어떻게 끼어들어야 되며, 아래 코드 부분중 밑줄 그은 부분들을 어디서 확인할수 있는지 몰라서 문의드립니다.
<eventHandlers>
<eventHandler after="document.insertDocument" class="Controllers\EventHandlers" method="afterInsertUpdateDocument" />
<eventHandler before="member.insertMember" class="Controllers\EventHandlers" method="beforeInsertMember" />
</eventHandlers>
document 는 문서모듈 , insertDocument 는 문서 모듈 컨트롤러에서 정의한 메서드 , 그리하여 document.insertDocument 로 작성하는거고, after= 또는 before= 로 시점을 표시하고... 이런식이라면 모든 다른 모듈의 임의 메서드를 위처럼 전부 끼어들수 있는건가요?
아니라면 현재 최신 라이믹스에서 끼어들수 있는 부분을 확인할수 있는 가이드나 방법이나 이벤트핸들러에 대한 더 자세한 설명을 확인할수 있는 문서같은것들이 있을까요?
이벤트 핸들러에 대한 고수분들의 설명부탁드립니다. 감사합니다.

루키
Lv. 3
댓글 8
저는 이렇게 합니다.
1. 원하는 기능을 담당하는 모듈에 들어갑니다.
2. ModuleHandler::triggerCall 을 검색합니다.
3. 있으면 관련 기능을 module.xml에 본문에 적어주신것처럼 작성합니다.
별도로 display, moduleHandler.init, moduleHandler.proc, moduleObject.proc과 같은 트리거들도 존재합니다.
"ModuleHandler::triggerCall 을 검색" 하는것과 아래 람보님이 적어주신 "ModuleHandler::triggerCall 함수를 호출이 되는 트리거에 한해서" 이 두 부분을 결합해서 보니 아리송했던 부분을 이젠 이해되는 같습니다.
"별도로 display, moduleHandler.init, moduleHandler.proc, moduleObject.proc과 같은 트리거" 들은 어떻게 사용하시는 간단히 여쭤봐도 될까요?
그냥 종류가 있는 것들이고 display는 displayHandler 클래스 안에 있는 것이고,
해당 위의 4가지 모두 classes 폴더 안에 있는 php파일 안에서 호출되는 항목들이니 그쪽을 살펴보시기 바랍니다.
https://github.com/rhymix/rhymix/blob/master/modules/document/document.controller.php#L901
이와 같이 트리거를 호출하는 곳에서 해당 트리거를 ModuleHandler::triggerCall 하게되면 거기에 선언한 모든 트리거 함수들을 불러와 모두 하나씩 순차적으로 실행해줍니다.
보통 이름은 모듈이름.함수명 으로 하는것이 관행이라 document.insertDocument 와 같이 이름을 잡아두고 있어요.
그래서 아무 함수에서나 사용이 가능할 것으로 보여지지만 그렇지는 않고, 제가 위에 링크한 줄의 코드처럼 ModuleHandler::triggerCall 함수를 호출이 되는 트리거에 한해서 다른모듈들의 해당 트리거의 함수를 호출할 수 있는 방식이 되므로 사용에 유의해주셔야 합니다.
$output = ModuleHandler::triggerCall('document.insertDocument', 'before', $obj); 처럼 명시적으로 해당모듈에 작성한 코드가 있어야 트리거가 되는걸로 이해했습니다.
그렇다면 제가 개인적으로 만드는 모듈도 ModuleHandler::triggerCall('트리거명, 'before', $obj); 처럼 지정해주면 , 다른 사람들도 이것을 확인하여 끼여들수 있다는 뜻이지요?