CI 묻고 답하기

제목 CI입문초보 페이지 구조 질문드립니다.
글쓴이 kanasii 작성시각 2013/06/10 15:14:51
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 16386   RSS
ci입문초보 페이지 구조 질문입니다.

독타입 선언부터 <body>까지 _head로 잡고
<body>안의 내용을 main이라 잡고
그 안에 head와 left를 적절하고 include하는 
노말한 방식의 구조를 ci로 하다보니 잘 모르겠습니다.

단순하게 view를 불러오는 형식으로
$this->load->view('a');
$this->load->view('b');
$this->load->view('c');
이런식으로는 안될거 같아 질문드립니다.

이유는 ci로 구조를 짤때 공통으로 들어가는 head의 내용 1페이지와
각 페이지별 js를 별도로 불러오고
그리고 body안에서 left를 include하는 방식으로 구조를 짜고 싶습니다.

답변 부탁드립니다.

 
 다음글 콘트롤러에서 다른 콘트롤러 메소드를 호출할때는 어떻게 ... (2)
 이전글 세션관련 질문이요 (2)

댓글

꾸숑 / 2013/06/10 15:29:51 / 추천 0
단순하게 불러오는 형식도 가능하긴 하지만 많이 번거롭고 유지관리 측면에서 부담스럽습니다.

그래서 _remap 을 사용합니다.
CI 묻고 답하기에서 remap로 검색해보시면 많은 글들이 있습니다.

간단한 사용예는 아래에 있습니다.
 public function _remap($method)
{
$site=$this->site_config_model->site();//모델
$this->load->view('sub_top_view',$site);

if( method_exists($this, $method) )
{
$this->{"{$method}"}();
}
$this->load->view('sub_foot_view');
}


 

배강민 / 2013/06/10 16:41:54 / 추천 0
kanasii / 2013/06/10 18:05:17 / 추천 0
 제가 초보라 이해를 못하고 있습니다..
 
재정리하자면...
 
_remap을 검색해보니.. container의 구조가 다를경우 사용하는게 아닌가 싶어서요..
 
일단 만들고자 하는 구조는
 
$this->load->view('header'); // doctype선언부터 <body> 까지
 
$this->load->view('main'); // <div id='wrap'>부터.. include "top.php"; 와 "left.php"를 가져오는 형태
// 하지만 $method에 따라 left의 형태가 바뀌므로 제어문으로 조절을 하는 형태가 될거 같습니다.
 
$this->load->view('footer'); // </body></html>
 
위와 같은 구조인데 _remap으로 가능한지요..?
risa / 2013/06/10 18:17:03 / 추천 0
_remap 으로 해결 가능 합니다.

리맵은 단순한 페이지 구분을 위해 사용됩니다.

public function _remap($method){
$this->load->view(head);
$this-> pagefun(); //페이지 함수 호출
$this->load->view(head);
}

function pagefun(){
$this->load->view(main);
}

// 결과

$this->load->view(head);
$this->load->view(main); //pagefun 의 main 
$this->load->view(foot);

단순하게 보면 이렇게 호출 되는 것입니다.
$method 를 찍어보시면 2번째 세그먼트를 나타냅니다.
$method 를 기준으로 분기 처리 하시면 되겠지요?


다른 단순한 해결 방법...

$this->load->view(head);
if(true) { $this->output->append_output('<div id="left"></div>');}else { .... }
$this->load->view(main);
$this->load->view(foot);


결국 형태는 같아요.


kanasii / 2013/06/10 18:26:24 / 추천 0
답변 주신 꾸숑님, 배강민님, risa님 감사합니다.

현재는 메뉴얼의 "뷰를 데이터처럼 리턴받기(Returning views as data)" 이것으로 대체하긴 했는데

_remap을 좀 더 보고 바꿔봐야 할거 같네요..