포럼
module 확장할 때
2012.06.03 22:54
급해서 여기다가 일단 질문 올려볼게요.ㅠㅠ (관리자님 죄송해요.)
모듈 확장할 때 view와 controller는 잘 확장이 되는 것 같다만 왜 유독 model만 확장이 안되는거죠?
혹시나 제가 오타를 쳤나 싶어서 몇 십번을 읽고 또 읽었는데 그건 아닌 것 같고...
./files/config/module_extend.php 에 확장된 view, controller, model들이 추가되는 건 알겠는데
이상하게 model만 추가되면 싸이트 전체가 다운됩니다.
제가 모르는 뭔가의 메카니즘이 있는건가요...ㅠ 의도적으로 막아놓으셨다던지..?
혹시 모듈의 model 확장에 성공하신 분 계신가요?
댓글 3
-
wiley
2012.06.05 13:59
-
개발해보쟈
2012.06.07 15:47
답변 주셔서 감사합니다. ^^ 많은 도움이 되었습니다.
-
개발해보쟈
2012.06.07 15:56
해결했습니다.
문제는 require_once에 있었습니다.
처음에 저는 다음 링크에서 @wiley 님께서 알려주신대로 모듈 확장을 시도하였습니다.
http://www.xpressengine.com/qna/19439580
위와 같이 하면 Controller와 View는 확장이 되는데 Model은 확장이 안되는 점을 발견하였습니다.
해결 방법은 다음과 같습니다.
만약 위 링크 예제에서 member.model.php 을 확장하려고 한다면
memberex.model.php 는 다음과 같이 되어야 합니다.
<?php require_once(_XE_PATH_.'modules/member/member.class.php'); require_once(_XE_PATH_.'modules/member/member.model.php'); class memberexModel extends memberModel{ /** * @brief 초기화 **/ function init() { $class_path = ModuleHandler::getModulePath('member'); $this->setModulePath($class_path); parent::init(); } } ?>
강조된 2번줄을 추가시켜야 합니다.
이상하게 model을 확장할 때는 "*.class.php" 까지 require_once 를 시켜야 합니다. Controller나 View를 확장할 때는 "*.controller.php" 나 "*.view.php" 만 require_once 시키면 되는데 말이죠.
코어를 살짝 들여다 봤는데 인스턴스를 생성할 때 model은 약간 다른 방식으로 생성하는 것 같습니다.
음... 관리자님, 이 문제는 해결 했으니까 질문 게시판으로 옮겨도 되지 않을까요...? ^^;;;
model 확장에 문제 없습니다. XE Core 최신버전에서도 잘 됩니다. ^^
./files/config/module_extend.php 파일에 확장된 모듈이 기술되어 있는데 실제 존재하지 않으면 예외처리가 안되어있어서 문제가 되었던 일이 있었습니다.