CI 묻고 답하기

제목 개인 라이브러리에서 모델 불러오기
글쓴이 risa 작성시각 2013/02/25 13:29:58
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 16600   RSS
 일단 하려고 하는 것은 사이트 구성에 레프트 메뉴 때문입니다.

[헤더]
[레프트메뉴] [메인컨텐츠] [라이트메뉴 (옵션 분기)]
[푸터]

헤더 레프트 푸터는 고정입니다.

헤더랑 푸터는 그냥 load->view() 로 불러 오니 문제가 없습니다.

문제는 레프트 메뉴 입니다.

레프트 메뉴에는 2개의 로직이 들어가는데

실시간 검색 창과 메뉴 리스트 입니다.

둘다 DB에서 뽑아 옵니다.


문제는 전 사이트에서 전부 노출 하기 때문에 아예 공용 함수로 빼서 불러와 처리 할려고 합니다.

그래서 라이브러리로 만들고 싶어 라이브러리에서 모델을 불러 오는 방법을 질문 드립니다.

$CI =&get_instance();
$this->load->database();

해도 제대로 되진 않더군요.


차선책으로는 후크에서 레이아웃을 나눠 처리 하는 방법은 차선책으로 보고 있습니다.
후크를 늘리는건 왠지 퍼포먼스적으로 석연치 않은 기분이 들기에 일단 라이브러리를 구현 할수 없으면 후크로 처리할 예정입니다.



라이브러리에 모델을 사용 하는 방법이 있으면 샘플 예를 알려 주세요.


PS. 1.7 버젼에서는 분명히 function폴더로 되어있는 공용 함수형태의 기능이 있었던것 같았는데... 2.1.3 버젼에는 없어진건지 아니면 제가 잘못 기억 하고 있는건지 헷깔리네요.
 다음글 컨트롤러 안에 index 함수에서 벨리데이션 질문입니다... (1)
 이전글 view 에서 사용할 img 파일들은 어디 경로로 넣어... (3)

댓글

인스카 / 2013/02/25 13:48:50 / 추천 0
 객체 개념을 아시면 조금 쉬우실텐데요..

$CI =&get_instance(); 를 하신 것은 $CI에다가 Codeigniter의 Instance를 할당한다는 얘기입니다.
기존에 $this->load 로 load할 수 있던 것들을 아래와 같이 사용 가능합니다.

$this->CI->load

risa / 2013/02/25 13:59:59 / 추천 0
 답변 감사합니다.

그래도 에러가 나네요.

Fatal error: Call to a member function model() on a non-object in



변종원(웅파) / 2013/02/25 14:00:39 / 추천 0
매뉴얼에 잘 나와있는데 조금 덜 자세히 보신 것 같습니다.

그러나  $this는 컨트롤러,뷰,모델에서만 직접적으로 사용할 수 있습니다.

만약 당신이 만든 라이브러리(custom class) 에서 CodeIgniter의 클래스를 사용하고자한다면 아래와 같은 방법으로 해야합니다.:

먼저 CodeIgniter객체를 변수로 할당합니다.:

$CI =& get_instance();

한번 할당한 후에는 $this 를 썼던 것대신에 새로할당한 변수($CI)를 대신 사용하면 됩니다:

$CI =& get_instance();

$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
etc.
risa / 2013/02/25 14:07:43 / 추천 0
답변 감사합니다.

해결했네요.

전 왜 봐도 봐도 다르게 이해 하는 걸까요 ㅜㅜ

꾸숑 / 2013/02/25 19:15:23 / 추천 0

답답해 하던 부분인데... 게시글과 답글 보니 이해 되네요...
모두 감사합니다.

이렇게 라이브러리 뿐만 아니라  helper나 hooks 에서도 사용될까요?