CI 묻고 답하기

제목 head, left or right, footer 등 공용 view의 효율적인 사용.
글쓴이 유마 작성시각 2012/11/21 10:18:27
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 20115   RSS
CI로 작업하기 시작하면서 ( 물론, 그 전부터 매뉴얼 읽어보고 검색해보곤 했지만. ) 많이 검색해보았는데요.

지금 hmvc 나 매치박스 등을 사용하지 않고.. CI만을 이용하여 작업중인데요.

얼마 전에 배운 _remap 기능을 이용하여 공통적인 작업을 그곳에서 처리하고 

헤드, left or right 메뉴, 푸터를 부르고 바디 부분은 method를 체크하여 해당 함수를 부르는 방식으로 일단 구현을 하고 있습니다.


그런데, 이렇게 작업을 하게 되면..

해당 클래스 말고 다른 탭이나 클래스를 부르게 되면... 다시 _remap 부분에 헤드, left or right 메뉴, 푸터를 부르고 그 클래스에서 부르는 method를 체크하여 해당 함수를 부르는 일련의 과정을 다시 한번 더 구현을 해야 되지 않습니까?

이거 왠지 똑같은 코드를 계속 중복으로 써야 하는 것 같은데...


요 부분을 조금 더 효율적으로 사용하는 방법이 있을까요?
 다음글 컨트롤러 링크 관련 (3)
 이전글 CI 경로 설정.. (7)

댓글

헛발이 / 2012/11/21 10:33:24 / 추천 0
widget 이나 Plugin 이란것도 한번 찾아 보시기 바랍니다..
유마 / 2012/11/21 10:37:36 / 추천 0
 헛발이 /

그런 것들도 검색해보긴 했습니다.

컨트롤러 안에서 다른 컨트롤러를 부를 수 있는 기능이라고 웅파님이 말씀하셨던데...

명확하게 설명해놓은 글을 못 찾아서.... 조금 애매해더라고요..

혹시, 잘 설명해놓은 글이 있나요? 링크라도? 
헛발이 / 2012/11/21 10:44:12 / 추천 0
변종원(웅파) / 2012/11/21 13:13:05 / 추천 0
그것도 귀찮으시면 hook으로 작업하시면 됩니다. 
전에 헛발이 님이나 다른 분들이 작업하신게 있습니다. layout으로 검색해보세요.

변종원(웅파) / 2012/11/21 13:19:19 / 추천 0
위젯은 컨트롤러에서 다른 컨트롤러를 호출(결국은 만들어진 결과, 즉 뷰를 참고하기 위한)하여
그 결과를 화면에 출력하는 역할을 합니다. 플러그인을 구현하거나 헤더, 푸터 등을 위해 사용하기도 합니다.

헤더를 위해서 사용한다면 좀 오버스펙일 수 있고 뷰를 변수에 담아 넘기면 되기 때문에 잘 안쓰구요.

제 경우엔 컨트롤러 생성할때 _remap 복사해서 넣습니다. hook을 쓰면 편하기는 한데
나중에 유지보수 측면에서 쑈를 할수도 있는지라....
(문서도 없고 선임도 없는 경우 hook으로 뭘 구현해놨다면 hook의 존재를 안다면 모를까
대부분 hook을 사용하지 않기 때문에 화면에 왜 그렇게 되는지 한참 찾아야합니다.)

제 경우에 ci소스 볼때 config 디렉토리 먼저 보고 hook 사용유무를 체크합니다.

layout 쓰시고 문서나 주석에 잘 남겨놓으세요. ^^ 
유마 / 2012/11/21 13:33:08 / 추천 0
웅파 //

오전 내내 고민한 부분인데 웅파님이랑 결론이 비슷하네요.

헛발이님 말씀대로 위젯을 사용할까 싶어서 링크 주신 곳 소스 보고 아무리 고민해도 저건 그냥 모듈화 해서 그 부분만 쏙~ 넣고 사용할 땐 괜찮은데, 헤드, 좌/우 메뉴, 푸터를 위해서 써먹기엔 좀 낭비라는 생각이 드네요.

그래서 후크를 사용하면 각각 컨트롤러를 부르기 전에 후크 컨트롤러로 처리 하고 각 컨트롤러에서는 본문 부분만 처리해서 넣어서 사용하는 방법이 그나마 제일 괜찮은 방법 같더라고요.

근데, 지금 작업하는게 새로 만드는 프로젝트가 아니라... 기존에 작업된 프로젝트를 리뉴얼 하는 개념이라..
굉장히 난잡한 구조와 소스들을... CI로 바꿀라니... 헤드, 좌/우 메뉴, 푸터에도 죄다 분기문으로 이거냐 저거냐 이거냐 저거냐가 도배 되어 있고.... (이런 것들이 모듈로 써먹을수 있을듯 한데) 
근데 헤드, 좌/우 메뉴, 푸터를 공통으로 쓰게 되면 딱히 모듈로 만들 필요도 없을 것 같고. 그기만 사용하는 것들이니 그래서 머리가 좀 복잡한 상황이네요.. 일단 머리 속에서 정리가 되어야... 코딩을 할텐데..