CI 묻고 답하기

제목 View 에서 모델 호출... (또는 DB 접근)
글쓴이 정민스 작성시각 2010/04/15 11:01:41
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 22142   RSS

지금.. View 페이지에서 header 와 footer 를 ->view 하고 있습니다.. (아래와 같이)
아래 뼈대로 모든 파일의 기본이 됩니다.

<table>
  <tr>
        <td><?=$this->view('header')?>
  </tr>
  <tr>
        <td>해당 페이지의 내용이 들어감</td>
  </tr>
  <tr>
        <td><?=$this->view("footer")?>
  </tr>
</table>

위와 같은 코드는 디자인 자체가 그렇게 되어있어서 지금 와서 바꿀수는 없을것 같구요.
문제는, header 에 DB접속한 값을 넣어야 되는데,
그러자면, 위의 뼈대 View 페이지에서 값을 가져와서 header 에 전달 해야 된다는 결론이네요.

그럼, 지금까지 만든 모든 페이지를 다 고쳐야 된다는건데 -_-;
그러기엔 양도 상당히 많구요..

그냥 header 페이지만 고쳐서 DB에 접근하고 싶은데..
View 에서 View 를 호출하는 케이스 이다보니, 좀 복잡하네요..

View 에서는 LoadModule 도 안되더군요..
어떻게 해결해야 좋을지요~

 다음글 [초보]배열.... (3)
 이전글 session 관련 크리티컬한(?) 질문 (3)

댓글

변종원(웅파) / 2010/04/15 17:17:15 / 추천 0
그래서 widget이다 layout이다 사용하는 것입니다. (이부분은 검색해보세요)

컨트롤러에서 로그인이 되어있을 경우에 보여줘야할 data를 if 로 처리하고 header에서도 그 데이터가 있는지 없는지에 따라 처리를 하면 될거 같은데요?

controller

if(로그인되어있음){
  $data['login_data'] = 모델();
} else {
 $data['login_data'] = '';
}

view (뷰에서 뷰를 호출한거라 $data를 배열로 한번 더 싸야 할지도 모릅니다.)
$this->view('header', $data);

위와 같이 하면 해결이 될지 모르겠지만 일이 많아지더라도
view안에 있는 헤더와 푸터를 controller로 빼는 것을 권해드립니다.

한번 만들고 유지보수 안할 것이면 모르겠지만 지속적으로 관리를 하다보면 더 큰 문제가 생길 수도 있습니다.

ci를 이용하다보면 controller마다 헤더와 푸터를 호출하는 것도 귀찮아서 _remap 으로 한번에 처리하거나 후킹등으로 처리를 하는데 오히려 반대로 가셨네요. controller단도 아니고 view단에서 일일이 호출.....
일이 많아지더라도 controller단으로 다시 가져오시길... ^^