CI 묻고 답하기

제목 view 페이지 include 부분
글쓴이 유마 작성시각 2012/12/03 14:06:10
댓글 : 12 추천 : 0 스크랩 : 1 조회수 : 27534   RSS
다시 질문공세 들어갑니다.

그동안 다른 문제가 발생하여 잠시 코딩을 못했네요.
전반적인 계획을 바꾸기 위해 노력했으나, 씨알도 먹히지 않아 작업재개합니다. ㅋㅋㅋㅋ

보통 php로 작업할 때엔 코드가 길어지거나 관리를 쉽게 하기 위해 파일을 따로 빼서 include 시켜서 작업을 할 때가 있죠.

조금 더 부연 설명을 하자면,

구조는 
head
left(right)
본문(컨텐츠)
footer 
라고 해도..

본문이야 항상 변하는 내용이니 여러가지 처리가 들어가지만,

공용으로 사용하는 head, left, footer 조차도 새로운 것들이 끼어들 수 있어서

어떤 부분은 include로 작업을 하는 부분이 적지 않아 있지요.

CI에서는 컨트롤러로 관리를 해야 하니 제 생각엔 view 페이지에 include 해서 사용하는 건 아닌 것 같습니다.


그렇다면, head 부분 컨트롤러를 따로 만들어서 그기서 따로 따로 관리를 하는게 맞을까요?
left, footer도 마찬가지..

원래 작업은 밑에 제 글에도 있지만..
후크를 사용하여 그 클래스에서 head, left와 footer에 들어갈 값들을 구해서 view를 작성했었는데....

CI가 능숙하다면 이리저리 막 사용하면 될텐데.. 아직 초보라.. 뭐가 효율적일지 모르겠네요.
 다음글 db정렬 질문입니다~ (5)
 이전글 CI에서 session문제 (5)

댓글

닥스훈트 / 2012/12/03 14:57:06 / 추천 0
 head, left, footer 따로 만들어 놓고

전체 view 를 하나 더 만들고

그 뷰안에서 

head, left, footer 뷰 등을 불러들이면 됩니다.

$this -> load ->view() 이렇게 뷰안에서 다른 뷰 불러들이는거 됩니다.

유마 / 2012/12/03 15:20:25 / 추천 0
닥스훈트 //

아, 그렇군요.

그렇지만 제가 고민하는 건 view가 딱 view만 있다면야 그렇게 해도 상관이 없는데,
view 를 뿌리기 위해 DB 나 로직에서 여러가지 처리를 해서 뿌려줘야 하는 부분들이 있습니다.

예를 들면 head 안에 타이틀이나 description, keywords 등.. head는 같으나 그 안의 값들은 바뀌어야 하는 부분들 등이 있습니다. 그럴 경우엔 view만 부른다고 될 문제가 아니라 그 로직 처리까지 하고 와야 하는데 그럴 땐 저렇게 해서는 안되지 않습니까?
헛발이2 / 2012/12/03 15:29:46 / 추천 0
그러면 포럼에서 위젯이나 플러그인이란걸로 검색해 보세요~
전에 많은 분들이 질문 올리고 한것들이니깐요..
삽질의추억 / 2012/12/03 15:33:33 / 추천 0
https://github.com/emateu/codeigniter-layout-module-hmvc

이게 도움이 될지 모르겠군요
너무 복잡해서 더 혼란이 될수도
공부하다가 말았음 ㅋㅋㅋ
한대승(불의회상) / 2012/12/03 15:56:48 / 추천 0
View에서 직접 호출 하세요.

모델에 있는거면 $this->load->mode() 하시고

$this->모델명->함수명();

컨트롤러에 있는거면 그냥 $this->함수명()

유마 / 2012/12/03 16:49:19 / 추천 0
불의화상 //

View 에서 모델이나 컨트롤러를 부르는 건.... mvc가 아니지 않을까요? ㅎㅎㅎㅎ

에잉 이것 저것 다 맞춰서 할라니 힘드네요.. oTL
한대승(불의회상) / 2012/12/03 17:12:19 / 추천 0
유마// View에서 직접 호출만 할 뿐이고 DB관련 코드를 코딩 하는것도 아닌데 왜 고민 하시죠?

MVC에 맞추어 각 모듈별로 코딩 되어 있다면 View에서 어떤 함수를 호출하여 구성하든 문제가 되지 않을것 같은데요. ㅎㅎㅎㅎㅎ

Peter / 2012/12/04 00:03:13 / 추천 0
요거요거 저도 궁금해했던 사항인데... 불의회상님 말씀 무슨 말씀인지 충분이 알겠습니다만 유마님의 질문도 이해가 가네요. 애초에 저도 C.I 를 접하면서 MVC를 배울때 워낙에 View는 오로지 보여주는 페이지 용도만 쓸 뿐이다를 강조 당해서 뭐든 컨트롤러에서 해결하려고 하는 버릇이 생겨버렸습니다. 개발론적으로 보면 최대한 맞춘다가 맞겠지만 유마님처럼 생각하시는분들도 많이 있으리라 생각듭니다. 고수님들의 의견은 어떠신지 궁금하네요.
milosz / 2012/12/04 07:22:40 / 추천 0
단선적으로 생각하면 해당 파일은 include만 하면 되고 예외의 경우가 있다면 if문 하나 추가해주면 되겠지만 MVC에선 기능과 표현을 분리함으로 유지보수 및 코드 재사용을 높이자는 방향이니까 좀 다르게 접근해야 한다고 봅니다.
 
만약 로직 처리까지 필요한 view라면 컨트롤러에서 또는 라이브러리에서 private function으로 로직에 뷰까지 불러오는 녀석을 만드시면 도움이 될겁니다. 중요한건 view 또한 기능과 구현에 따라 잘 모듈화가 되어 있어야 합니다. 이게 잘 나눠지지 않으면 자연스레 "그냥 include 하면 되는걸 왜 이렇게 해야하지?" 하고 생각하게 되죠. 만약 include 한다고 하면 include 하는 파일은 기능과 표현이 분리되지 않은 덩어리 파일이 될겁니다.
 
"그냥 include 하면 되는걸 왜 이렇게 해야하지?" 하고 생각하는건 MVC를 맨처음 배울 때 모두들 생각하는 부분일겁니다. 그러니까.. 화이팅이에요ㅎ

그리고 이런 부분을 좀더 활용하기 쉽게 만든게 헛발이님께서 언급하신 위젯이나 플러그인이니 참고해보세요.
변종원(웅파) / 2012/12/04 10:16:39 / 추천 0
Peter/ 컨트롤러에서 처리하는 것이 맞지만 모든 것을 다 처리할 수는 없죠.
이론과 실무는 달라질 수 있는 것이구요.

한번 잘 생각해보세요. 모든 데이터 처리를 완벽하게 컨트롤러에서 처리해서 넘기는지요?
뷰에는 if문 없이 foreach만으로 처리를 하시는지... ^^
유마 / 2012/12/04 11:45:22 / 추천 0
많은 분들이 답변을 주셨네요..

어제 고민을 좀 해본 건 이거였습니다.
워드프레스처럼... view에서 함수명을 예를 들면 get_head() 이렇걸 부르면...
head 부분에 해당하는 것이 불러와지는 거죠... get_head() 함수로 들어가면... 로직 처리 되어서 뷰가 만들어져 head에 해당하는 뷰가 반환 되는 것일테고요...

그러면 실제 적인 뷰에서는 head, left, footer 부분은 저런 함수로 불러오고 컨텐츠 부분만.. 컨트롤러에서 처리해서 하면 되지 않을까? 하는거였죠..

머리에서는 이렇게 하면 될려나? 저렇게 하면 어떨까 해도... 아직 구체적인 뭔가가 잡히진 않네요.. -_-
그게 문제네요.. ㄷㄷㄷㄷ
헛발이2 / 2012/12/04 12:43:07 / 추천 0
간단히 설명하면 그게 바로 위젯기능이에요...
코드이그나이트에는 기본 기능이 아니지만 위젯 라이브러리를 다운 받아서 로드 하면 위와 같이 쓸수 있어요..

http://ellislab.com/forums/viewthread/109584


즉 간단히 설명 하면..

<?php widget::run('콘트롤명', 값들.....; ?>

이렇게 하면 해당뷰에서 특정 콘트롤로 가서 콘트롤과 뷰를 구성으로 하여 수행 할수 있습니다.
하지만 위젯은 콘트롤과 뷰로만 구성하게 되어 있어서...

MVC를 모두 사용하는것으로 위젯을 변경시킨것이 플러그인 구조입니다...

제 생각엔 하시려는것이 바로 플러그인 구조 같은데..한번 찾아 보심이...