CI 묻고 답하기

제목 라이브러리 개념과 배열에 관해 몇가지 질문.. 부탁드립니다.
글쓴이 멜로우모카 작성시각 2016/01/31 20:51:00
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 12686   RSS

며칠전에 CI에 입문했습니다.(PHP자체도 입문한지 몇달 안됬습니다.)

CI없이 사이트를 만들때 화면 구성을 상단, 좌측, 우측 이렇게 세부분으로 나누는걸 

이런식으로 사용했엇습니다.

 

...
<body>
require_once('header.php'); //상단 고정
<div>content</div> // 각페이지마다 바뀔 부분
require_once('sidebar.php'); // 우측 고정
</body>
...

 

위처럼 화면을 3개로 나누기 위해서 'HOOK으로 레이아웃 한방에 훅~'이라는 글을보고 화면을 나누긴 나눴는데.

 

원래사이트에서 header, sidebar가 고정으로 사이트 모든페이지에 나옵니다.

header부분은 그저 링크만있는 메뉴바라서 상관이 없지만

sidebar부분에서 표시되는 내용이 DB의 여러 테이블에서가져온 내용가공하여 화면에 뿌려줍니다.

 

 

그런데 CI에서 모든페이지에 나올 저 sidebar부분을 모델이나 컨트롤러부분에 코딩을 하자니

만드는 페이지마다 전부 소스를 넣어야 될것같아서 찾아보다가

라이브러리 파일을 만들어서 해당 파일안에서 sidebar에 필요한 부분을 코딩한후에

sidebar가 있는 모든 페이지에 

 

$this->load->library('sidebar_library);
$data['result'] = $this->sidebar_libraray->get_result_data();
...
$this->load->view('sidebar_v', $data);

 

형식으로 사용하려고하는데

라이브러리라는 개념이 이렇게 사용하는게 맞는지요?

 

 

그리고 위 라이브러리 파일에서 get_result_data(); 를 호출하면


//각테이블에서 가져온 데이터 가공후 배열에 저장
$data = array(
	'calc_a' => $calc_a,
	'calc_b' => $calc_b,
	'calc_c' => $calc_c,
	...
);

return $data;

 

이런식으로 array에 담아서 리턴해주는데

 

위에서 했던것 처럼 $data['result']에 담아서 view에게 $data로 넘겨준뒤

 

view 파일에서 <?= $result->calc_a; ?> 식으로 불러오려니까 오류가납니다.

 

컨트롤러부분에서 $data['result']아랫줄에 print_r($data['result']); 하니까 제대로 배열에 담겨있는것처럼 나오는데

 

어떤부분이 잘못되어서 view에서 사용할수 없는 것인지요??

 다음글 form_validate 2버전과 3버전 다른 동작이 ... (5)
 이전글 다른이에 코드를 받아서 세팅하려하는데 구글링이 안되는에... (1)

댓글

변종원(웅파) / 2016/01/31 21:49:54 / 추천 0

동일한 기능을 하는 _remap 이라는게 있습니다. 

포럼소스를 받아서 참고하시거나 매뉴얼에서 remap을 검색해보세요. ^^

 

일반 배열로 선언하시고 객체배열로 사용하려고 하니 에러가 날 수밖에 없습니다.

$result['calc_a'] 로 사용하셔야 합니다.

멜로우모카 / 2016/01/31 22:54:23 / 추천 0

모델에서 쿼리 result()값을 컨트롤에서받아서 뷰로 넘겨줄때 저렇게해서 다 그렇게 하는줄 알았는데, 일반배열과 객체배열의 차이였군요 감사합니다.