CI 코드

제목 [응용] HMVC로 모듈개발하기
글쓴이 ci세상 작성시각 2009/10/27 13:34:03
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 36168   RSS

- 용도 : application 폴더 아래에 있는 MVC 폴더를 모듈별로 관리

- 모듈별 사용예
member (회원)
 - controllers (컨트롤러)
 - models (모델)
 - views (뷰)

board (게시판)
 - controllers (컨트롤러)
 - models (모델)
 - views (뷰)

- 소스배포 : http://codeigniter.com/forums/viewthread/121820
=> 장점 : 2개의 라이브러리 만으로 HMVC를 사용할 수 있개 해주었고. 최신 배포판이 계속 나오고 있는것이 장점입니다.
=> 첨부파일 : modular_separation_17.zip 참조

※ 참고 : 원배포 http://codeigniter.com/wiki/Modular_Extensions_-_HMVC/ 소스는 다음과 같은 문제점이 있었습니다.
=> 컨트롤러 정의 함수를 추가/확장한 라이브러리 get_instance로 불러오지 못하는 문제점
=> autoload > model에서 모듈별로 정의를 할 수 없었던 부분
=> 컨트롤러에서 모델, 뷰 호출시 기타 모듈것을 가지고 올 수 없었던 부분



<설치방법>
1. 다운로드
- 링크 : http://codeigniter.com/?ACT=51&fid=58&aid=8589_yXV7MuBDKsXX7t8G481R&board_id=2
- 첨부파일 다운로드

2. application/libraries 폴더로 파일 2개를 복사해서 넣습니다. (MY_Loader.php, MY_Router.php)

3. application 폴더밑에 modules 폴더를 생성합니다.

4. modules 폴더밑에 사용할 모듈폴더명을 생성합니다. 예) member

5. 생성한 모듈폴더명 하위에 controllers, models, views, 기타... 을 생성합니다.


<사용방법>

codeigniter 사용법을 따릅니다.

1. 뷰호출
$this->load->view('모듈폴더명/뷰파일명');

2. 모델호출
$this->load->model('모듈폴더명/모델파일명');

등등 대부분 동일합니다.


<주의 : 리눅스 서버 설치시>
application 폴더에 있는 MVC 폴더를 삭제하시면 안됩니다.
 

<Tip : 모듈폴더들을 루트로 배치시키기>

+ system (코어파일)
+ application (개발설정)
+ images (이미지파일)
+ css (css파일)
+ js (js파일)
+ member (회원모듈)
 - controllers (컨트롤러)
 - models (모델)
 - views (뷰)
+ board (게시판모듈)
 - controllers (컨트롤러)
 - models (모델)
 - views (뷰)- member

위와 같이 배치시키기 위해서는 다음 절차를 따라야 합니다.

1. index.php 수정
- system, applicaion 폴더명이 바뀌거나 위치가 변경되면 절대경로로 수정해 줍니다.

2. index.php 줄이기 (.htaccess 파일생성)

 

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L] 

3. HMVC 모듈폴더 경로 수정 (application/libraries/MY_Router.php 4~6줄)
Modules::$locations = array(
	''	=> '../../',
	);
- 참고 : 모듈폴더가 어느 위치에 있는것에 따라서 항상 이부분을 수정해 주면 됩니다.




######## 사용팁 ########

1. language 호출시 (2009년 11월 23일)

예)
board/language/kr/error_lang.php
$this->lang->load('error', 'kr');
echo $this->lang->line('language_key');



2. 다른컨트롤러 호출 및 다른 컨트롤러에서 디비처리등이 필요할때
http://codeigniter.com/wiki/Modular_Extensions_-_HMVC/  에서 배포하는 모듈로더함수를 이용해야함
이버젼에서는 이함수가 적용되지 않기때문에 선택적으로 HMVC를 사용하면 됩니다.
재정리 : http://codeigniter-kr.org/source/view/306/page/1/

첨부파일 modular_separation_17.zip (5.7 KB)
 다음글 [APP] codefight CMS
 이전글 포럼의 소스 오픈합니다. (38)

댓글

케이든 / 2009/10/27 15:37:28 / 추천 0

요고 괜찮죠

답변도 잘해주고 업뎃도 잘되고

다큐먼트만 잘되있다면 좋을텐데

추천 빵

마냐 / 2009/10/27 16:41:38 / 추천 0

오호.. 좋은 정보 감사합니다.
matchbox 보다 나은 건가요.

ci세상 / 2009/10/28 00:08:40 / 추천 0
위키배포 소스보다 훨씬 나은 HMVC를 업데이트 해두었습니다. 기존 codeigniter 방식을 그대로 준수해 주는 소스입니다.
미드필드 / 2009/12/09 06:41:42 / 추천 0
matchbox 는 뷰나 모델 로드 하는 코드가 ci 기본 코드 하고 틀리던데

이건 같나보네요 이게 더 좋을까요 matchbox가 더좋을까요? ㅎㅎ