묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
모듈 확장 (Module Extend) 관련 질문
2011.01.05 15:35
http://xe.xpressengine.net/wiki/19195353 이 위키를 읽고 현재로선 구현방법이 머리에 안들어와서요.
1. A모듈의 확장할 B모듈(파일)을 만든다.
2. B모듈이 제어판에서 '설치' 되게 하면서 Module Extend가 DB에 등록된다.
3. A모듈이 실행될때 B모듈의 메서드 $objA->doSomething() 을 사용할수있게 된것을 확인해본다.
4. A모듈이 실행될때 원래 A모듈의 $objA->doAnything()의 작동이 B모듈의 내용으로 대체된것을 확인한다. (이게 되나?)
여튼 이런식의 설명을 좀 부탁드립니다.
ㅠㅠ
[검색키워드 : 확장모듈,모듈확장,Module Extend]
태그 연관 글
- [2011/01/08] 포럼 API 확장에서 module.xml 는 어떻게 상속시키나요? *4
댓글 1
-
wiley
2011.01.05 15:52
-
씨지
2011.01.05 16:24
옹.. $output = parent::procMemberLeave(); if ($output && !$output->toBool()) return $output; 이부분은 일단 부모 메서드를 그대로 실행하고 정상실행되면 return 되고 아니면 그아래 //do something 쪽이 실행된다고 보면 되는거죠? 그리고 parent::procMemberLeave(); 이게 없으면 메서드가 완전 재정의(대체)되는거구요. 제가 제대로 이해한건지요? -
wiley
2011.01.05 20:42
$output = parent::procMemberLeave(); if ($output && !$output->toBool()) return $output; 이 부분은 부모쪽에서 비정상 실행되면 return 되구요. 정상이면 아래 // do something 으로 타고내려갑니다. 말씀대로 parent::procMemberLeave();를 안해주면 완전 재정의(대체) 맞습니다 ^^ -
씨지
2011.01.05 20:53
예제로 주신걸 참조로 board모듈의 view를 확장하는걸 해보고있는데 require_once(_XE_PATH_.'modules/board/board.view.php'); 하고나서 바로 Fatal error: Class '+ 'board' not found in /home/hosting_users/dev01/www/modules/board/board.view.php on line 8 이런 에러가 자꾸.ㅠㅠ -
씨지
2011.01.05 21:34
여기 댓글쓰는게 너무 답답해서 http://xe.xpressengine.net/19440373 여기에서 이어서... -
씨지
2011.01.06 11:13
확장모듈의 memberex.class.php 에서도 부모모듈의 class를 require_once()해서 상속해줘야하는 것으로 보입니다.^^
Module Extend를 활용한 예제를 올려드립니다. 참고하세요~ ^^
memberex.zip
1. 모듈확장을 등록합니다.
$oModuleController->insertModuleExtend('member','memberex','controller','');
2. 부모모듈을 상속받습니다.
require_once(_XE_PATH_.'modules/member/member.controller.php');
class memberexController extends memberController {
3. init 에서 부모클래스의 path를 따르도록 설정해 줍니다.
/**
* @brief 초기화
**/
function init() {
$class_path = ModuleHandler::getModulePath('member');
$this->setModulePath($class_path);
parent::init();
}
4. 회원탈퇴 부분만 재정의한 경우입니다. 다른 메서드들은 부모클래스의 메서드를 그대로 따릅니다.
/**
* @brief 탈퇴
**/
function procMemberLeave() {
$output = parent::procMemberLeave();
if ($output && !$output->toBool()) return $output;
// do something
//$logged_info = Context::get('logged_info');
//$member_srl = $logged_info->member_srl;
//$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
}