CI 묻고 답하기

제목 _remap 관련 질문드립니다.~
글쓴이 하품하는호랭이 작성시각 2013/07/11 09:53:06
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14341   RSS
 안녕하세요. 가입하고 첫글이 질문이네요. 죄송합니다. 초보라서 이해를 부탁드립니다. ( '  ' )( . . )

view 페이지를 조각내어서 관리하고 remap을 통해 컨트롤러 페이지에서 불러오는 방법으로 하다가
컨트롤러에서 계속 정의해주는게 이상해서 질문을 드립니다.
저는 html페이지를 header, sub_header , left_menu, content, sub_footer, footer 등으로 나누고 있습니다.
그래서 remap에서 
function _remap($method) {
$this->load->view('/_frame/header');
$this->load->view('/_frame/sub_header');
$this->{$method}();
$this->load->view('/_frame/sub_footer');
$this->load->view('/_frame/footer');
}
이렇게 처음에 사용을 해봤습니다.  후킹을 사용해서도 해봤지만 이해가 잘 안가더라고요 ㅡㅜ
그래서 Frame 이라는 라이브러리를 만들어서

class Frame_shin {
public $obj;
function __construct() {
$this->obj =& get_instance();
}
function view($view, $data = array(), $frame = 'default') {
              if(!$view) return false;

if($frame == 'main') {
$this->obj->load->view('/_frame/header', '');
$this->obj->load->view('/_frame/sub_header', '');
$this->obj->load->view($view, $data);
$this->obj->load->view('/_frame/quick_banner', '');
$this->obj->load->view('/_frame/sub_footer', '');
$this->obj->load->view('/_frame/footer', '');
}else if($frame == 'default') {
        $this->obj->load->view('/_frame/header', '');
$this->obj->load->view('/_frame/sub_header', '');
$this->obj->load->view('/_frame/left_menu', '');
$this->obj->load->view($view, $data);
$this->obj->load->view('/_frame/quick_banner', '');
$this->obj->load->view('/_frame/sub_footer', '');
$this->obj->load->view('/_frame/footer', '');
 
}
}
}

이렇게 만들어서 해당 컨트롤에서 사용해 보려고 하고 있습니다.
검색을 해봐도 이게 잘못된건지 아니면 제가 이해를 잘못해서 다른방법이 있는데 뻘짓을 하고 있는건지
몰라서 이렇게 질문을 드립니다. ㅡㅜ 
_remap을 사용해서 하면 원래 컨트롤단에서 한번은 상단처럼 해주어야 하는건가요?



 다음글 view load 시 get 호출. (3)
 이전글 adm 폴더에 디폴트값 어떻게 정하나요? (1)

댓글

변종원(웅파) / 2013/07/11 10:45:16 / 추천 0
라이브러리로 사용하셔도 어차피 컨트롤러 생성자에서 로딩을 한번 하고 해당함수를 호출해주셔야 하죠.

손 안대려면 후킹을 이용한 레이아웃을 이용하세요.

컨트롤러가 수백개는 아니겠죠? 컨트롤러 새로 만들때 초기에 잘 셋팅해놓은(_remap()까지) 컨트롤러 복사해서
사용하면 크게 문제 없습니다. 그리고 레이아웃은 개발 초기에 잡아놓는 것이라 나중에 크게 바뀔 일이 없구요.
하품하는호랭이 / 2013/07/11 11:34:16 / 추천 0
 ~ 감사합니다. 역시나 그냥 후킹을 이용하는것이 좋군요. 
빠른 답변 정말 감사합니다.~