CI 묻고 답하기

제목 [초보]ci2.0 모듈러의 사용
글쓴이 헛발이 작성시각 2011/03/08 16:34:51
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 25777   RSS
질문좀 드릴께요...
저도 2.0 한번 사용해 볼까 하고 설치 하고 한번 끄적끄적해 봤는데요..
저 같은 경우는 1.7.3에서

Codeigniter + Hook를 이용한 레이아웃 + Matchbox + tank_auth를 사용해 왔었습니다.

그래서 2.0에서도 같은 방법을 사용해 보려고 쭈욱 해 봤는데요..

일단

1. Codeigniter2.0은 바로 설치 하면 돌아 가고요..
2. Hook를 이용한 레이아웃은 버젼과 상관 없는것이라서 이것도 바로 이용할 수 있었는데요...
3. 문제는 Matchbox인데요... 이건 잘 안되네요...
4. tank_auth이것도 2.0버젼으로 나와 있어 바로 적용할수 있었구요...


질문은 3번 메치박스의 문제입니다.
이건 기존에 썻던것을 그냥 Core밑으로 넣고 해서는 그냥 잘 안되더라구요..
그래서 인터넷을 뒤져 보니 Codeigniter2.0 + HMVC의 자료가 많고 Matchbox는 2.0에 대한것이
찾기 어렵더라구요..

그래서 이번에 저도 HMVC로 바꿔 볼까 했는데 이것도 쉽지만은 않네요..

설치는 쉽게 되었어요.. 다운 받아 넣으라는 곳에 넣고 해서 모듈러가 인식되서 모듈을 사용할수 있게 되었지만..
두가지 궁굼증이 있습니다.


1. 모듈의 디랙토리를 어플리케이션과 동일 하게 하려 했어요.
+application
+modules
+system
이렇게요... 그래서 application/third_party/MX/Modules.php내용을 수정해서
/* get module locations from config settings or use the default module location and offset */
is_array(Modules::$locations = $CFG->item('modules_locations')) OR Modules::$locations = array(
	//APPPATH.'modules/' => '../modules/',
	'' => '../modules/',
);
이렇게 해도 디랙토리를 바보같이 못 찾더라구요...

2. 두번째 질문은 HMVC의 view불러오기 방법인데요...
Matchbox에서는 콘트롤러에서
function index()
{
$this->load->view('welcome_message');
}
이렇게 하면 뷰를 불러 오는데...
HMVC는 바보같이 왜
function index()
{
$this->load->view('./welcome_message');
}
이렇게 해야 불러 올까요?
./ 이거 없이 그냥은 못 부르나요?



초보자의 질문입니다..
 다음글 세션과 페이지 URL 노출 관련 질문입니다. (1)
 이전글 index() 함수에서는 해당 클래스와 동일한 이름에 ... (2)

댓글

변종원(웅파) / 2011/03/09 00:35:49 / 추천 0
 1번은 '' => '../modules/', 이 부분을 수정해보시기 바랍니다.
예전에도 비슷한 질문이 있어서 답변을 올린 적이 있었습니다.
http://www.codeigniter-kr.org/qna/view/1963/page/1/


2번째 질문은 hmvc load부분 소스를 보면 답이 딱 나올 건데.. ^^
헛발이 / 2011/03/09 09:55:44 / 추천 0
자답이긴 하지만.. 웅파님의 힘을 입어 해결 했습니다...
다른 분들도 혹시 같은 고민 하시는 분들께 도움이 되고자 해결? 방안을 작성합니다..

1. app와 같은 레벨에 이동 시킬 경우..
이건 좀 고민 해 봐야 할듯 싶더군요.. 지금까지는 이렇게 디랙토리 구성을 했었습니다.
+application
-+config
-+controllers
-+models
-+views
+modules
-+auth
--+config
--+controllers
--+models
--+views
+system

이런식으로 했었는데.. 제가 잘못생각했던거 같네요..
어제 이 문제로 인터넷을 뒤져 보다가 일본코드이그나이터에서 이번에 1월인가? 2월에 했던
세미나에서 찍은 동영상을 봤는데 그 세미나에서 hmvc에 대한 작성법에 대해서 강좌를 한 것을
들어 봤는데

기본 app는 공통 또는 기준이 되는 것들을 넣고 기본 app안에 modules를 넣고
그 모듈에선 해당 모듈을 작성하며 공통으로 사용하는것이 아직 준비 되지 않은 상태에서
해당 모듈에 가짜로 만들어 개별적으로 사용하다 공통라이브러리 같은게 완성되면
모듈단에서 가짜로 만든것을 삭제하므로 자연스럽게 에라 없이 라이브러리를 사용한다.. 라고 하더군요.

즉 한명이 작업하는것이 아니고 여러사람들이 작업할 경우 그렇게 한다고 하더군요..
뭐 정답이란것이 없는것이 겠지만..

모듈이 완전 독립적으로 기본 app와 동일한 레벨에 위치 하지 않고 가장 기본이 되는것이 하나 존재 하고
그 아래에 모듈화를 시킨다 그런식으로 코딩들을 하더군요 ....

저도 항상 생각해 왔던것이 여기저기서 사용하는것은 어떤것을 사용해야 하나 고민 했던 저로서는
모듈을 기본app와 동일하게가 아니고 기본app밑에 모듈을 위치 시키는것이 타당하다고 생각이 들어
모듈위치를 바꾸지 않고 기본app에 넣기로 맘먹었습니다..

결국

+application
-+config
-+controllers
-+models
-+views
-+modules
- -+auth
---+config
---+controllers
---+models
---+views
+system

고치지 않고 그냥 사용하기로.... 해결...

2. ./에 대한 문제는 이렇게 해결 했는데 맞는지 모르겠네요.. 잘 한짓? 인지...
./app/third_party/MX/Loader.php의 255번줄에
list($path, $view) = Modules::find($view, $this->_module, 'views/');
이것을 다음과 같이 수정해서 해결 했습니다.
list($path, $view) = Modules::find('/'.$view, $this->_module, 'views/');

맞는 방법인지 모르겠네요...