CI 묻고 답하기

제목 모델값을 컨트롤러에 읽는 방법 문의 드립니다.
글쓴이 꾸숑 작성시각 2013/02/13 01:03:42
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 15264   RSS

개발환경 : win7, apmsetup7, 에디터플러스 ...

게시판 관리자 테이블(board_admin)의 설정값을 컨트롤러에서 가져와서 레벨별로 읽기 쓰기 등을 제어 할려고 합니다.
뷰에서는 잘 읽어 지는데 컨트롤러에서 읽어 지지 않아서 문의 드립니다.
바쁘시지만 부탁 드립니다.

models/board_model.php
 //관리자 테이블
    function board_admin(){
   $id = $this->id;
   $this->db->select("*");
   $this->db->where('id', $id);
   $query = $this->db->get('board_admin');
   $row = $query->row_array();
   $data['id'] = $id;
   $data['board_skin'] = $row['board_skin'];
   $data['read_level'] = $row['read_level'];
   $data['write_level'] = $row['write_level'];
   $data['reply_level'] = $row['reply_level'];
   $data['comment_level'] = $row['comment_level']; 
    }

controllers/board.php
    //글입력 폼
 function write_form(){
   $this->board_model->board_admin();
   echo $write_level;     //146줄
   if ($this->session->userdata('level')) {
   $this->load->view('top_view');
   $data['title']='글쓰기';
   $this->load->view('write_form_view',$data);
   $this->load->view('foot_view');
   }else{
      redirect('auth/login');
   }
 }


에러 메세지
 

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: write_level
Filename: controllers/board.php
Line Number: 146





//한가지 더 여쭈어 본다면 보통 php에서는 쿼리문 작성확인할때 echo $query; 이렇게 확인하는데요
models 에서는 어떻게 확인해야 하는지요?
태그 컨트롤러,모델
 다음글 CI 세션 질문 드립니다. (3)
 이전글 저두 session관련 질문..; (1)

댓글

꾸숑 / 2013/02/13 02:40:19 / 추천 0
아래 소스처럼 컨트롤러에 쿼리문과 상수 선언을 해서 처리는 했습니다
그러나 MVC에 어긋나는것 같기도 하고 해서.. 모델에서 쿼리문을 실행하고 컨트롤러에서 모델값을 불러 와서 사용하고 싶습니다. 

controllers/board.php
   $id = $this->id;
   $this->db->select("*");
   $this->db->where('id', $id);
   $query = $this->db->get('board_admin');
   $row = $query->row_array();{
   define('ADMIN_BOARD_SKIN', $row['board_skin']);
   define('ADMIN_READ_LEVEL', $row['read_level']);
   define('ADMIN_WRITE_LEVEL', $row['write_level']);
   $this->admin_skin = ADMIN_BOARD_SKIN;
   $this->admin_read_level = ADMIN_READ_LEVEL;
   $this->admin_write_level = ADMIN_WRITE_LEVEL;
   }

echo $admin_read_level   //값이 컨트롤러, 뷰등 모든 부분에서 제대로 출력 되는군요..
변종원(웅파) / 2013/02/13 07:57:01 / 추천 0
모델에 return이 없습니다.
한대승(불의회상) / 2013/02/13 08:21:10 / 추천 0
꾸숑// define을 사용하여  처리한것은 좋은 아이디어지만 부작용이 많은 방법입니다.
일반적으로 아래처럼 모델에서 생성한 값을 컨트롤러로 넘겨서 사용한답니다.

1. 모델
function board_admin(){
   $id = $this->id;
.
.
.
   $data['id'] = $id;
   $data['board_skin'] = $row['board_skin'];
   $data['read_level'] = $row['read_level'];
   $data['write_level'] = $row['write_level'];
   $data['reply_level'] = $row['reply_level'];
   $data['comment_level'] = $row['comment_level']; 

   return $data;
}
2. 컨트롤러
function write_form(){
   $data = $this->board_model->board_admin();
   echo $data['write_level'];     //146줄
.
.
.
.

}

꾸숑 / 2013/02/13 18:31:05 / 추천 0

웅파// 항상 좋은 답변 감사합니다.
불의화상// define사용의 부작용은 무었이 있을까요? 사용하기는 편하긴 하더군요....
    그리고 방금 불의 화상님이 말씀하신데로 해보았는데.... 변함없는 에러 메세지네요 이렇게 저렇게 해보고 있습니다.^^

///////////////////////////////////////////
2013.02.14 오전 1:51
불의화상님 코드가 완벽하게 맞았습니다.
제가 잘못 적용했었네요....

열공!

꾸숑 / 2013/02/16 01:42:24 / 추천 0
자문 자답 한가지^^
echo $this->db->last_query();
모델이든 뷰이든 어디든 쿼리문 다음에 위에 소스 넣으면 정규식 쿼리문이 출력되어 학습에 도움이 되겠네요~~