CI 묻고 답하기

제목 컨트롤러에서 다른컨트롤러의 함수 불러오는 방법?
글쓴이 kimswave 작성시각 2010/05/26 15:19:06
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 28325   RSS
보통 컨트롤러의 함수가 작업 마치고 마지막에 어떤 페이지를 불러오려할 때

자기가 속해있는 컨트롤러 클래스 내부에 있는 함수는 %this->함수이름 으로 호출되는 거 같은데요...

다른 컨트롤러에 있는 함수를 불러오려면 어찌해야하나요?

중간에 코드를 끊어서 href.location 자바 스크립트를 써야하나요?

자기가 속해있는 클래스 내의 함수 즉 uri가 되겠는데, 이건 접근 가능하지만 다른 컨트롤러의 uri에는 접근이 불가하다면,

만약 hehehe라는 게시판과, huhuhu라는 게시판이 있는데 이게 각각 hehehe라는 컨트롤러와 huhuhu라는 컨트롤러로 따로 작성되어 있다면,

hehehe 게시판에서 글을 작성한 뒤, huhuhu 게시판의 리스트를 뿌려주고 싶을 때 단지 huhuhu게시판 list의 view를 불러오는 건

오류를 불러오고, huhuhu/list 의 uri를 불러와야  db 데이터도 가져오고header, footer도 다 달고 나올텐데.... 

컨트롤러에서 다른 컨트롤러의 함수나 아니면

이제까지 했던 모든 작업 완료한 뒤 모두 클리어 시키고 원하는 uri로 redirect 시켜주는 함수가 있나요?

 다음글 멀티파일 업로드 구현시 파일이름 생성 문제 질문좀 드려... (2)
 이전글 [초보] 라이센스에 관하여~ (7)

댓글

kimswave / 2010/05/26 15:25:08 / 추천 0
redirect() 이거 쓰면 앞에서 읽어 왔던 내용들 다 무시하고 주소창에 새로 주소 쓰듯 완전 redirect되는 것 맞는가요.?
변종원(웅파) / 2010/05/26 15:28:52 / 추천 0
다른 모델 호출방식도 동일합니다.
그냥 호출하셔서 동일하게 쓰시면 됩니다.

a 컨트롤러

$this->load->model('a_model');
$this->load->model('b_model');

$this->a_model->함수();
$this->b_model->함수();

다른 모델 호출은 간단합니다. 
컨트롤러에서 다른 컨트롤러 자체 호출은 다른 방법을 써야하지만요.



케이든 / 2010/05/26 15:35:09 / 추천 0
이 질문을 FAQ로 추천합니다!
kirrie / 2010/05/26 16:47:41 / 추천 0
1. redirect는 header('location: ...') 와 효과가 같습니다.

2. 이렇게 저렇게 하면 컨트롤러 안에서 다른 컨트롤러의 메소드를 불러오는게 가능하기는 한데, 추천하지 않습니다. 의미상으로 컨트롤러는 비지니스 로직이고 각 단위마다 서로 명확하게 구분되어야 합니다.
말씀하신 부분은 다른 컨트롤러의 메소드를 불러오는 것 보다는, 라이브러리를 따로 만드셔서 작업하시는게 더 좋을 것 같습니다.
mycastor / 2010/05/27 09:00:50 / 추천 0

저도 kirrie형님의 2번째 답변과 같은 생각입니다.

kimswave / 2010/05/27 19:00:16 / 추천 0
회원관련 컨트롤러, 회계관련 컨트롤러 가 잇다고 가정하면
회계관련 뷰에서 회원정보 수정이란 링크가 있고, 이걸 수정하면 회계관련해서도 정보가 변하기 때문에,
회원관련 컨트롤러로 이동하고 수정후 회계관련 컨트롤러를 불러와야한다면 어떡하나요?

이럴 때 이렇게 둘 중에 하나를 불러오는 것을 라이브러리로 따로 만들어놓아야 하나요?
양승현 / 2010/05/27 20:37:50 / 추천 0
회원을 모듈화 시키고(MVC) 다른 컨트롤러에서 해당 부분을 불러오면 됩니다.

matchbox나 hmvc를 사용하셔서 다른 컨트롤러를 불러다 쓰실수 있을겁니다.

관련된 내용은 포럼 검색을 ^^;