CI 묻고 답하기

제목 코드이그나이트 입문자가 문의드립니다.
글쓴이 하드코딩 작성시각 2012/02/03 02:34:01
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 24010   RSS
코드이그나이트 입문자입니다.
레퍼런스 한번 정독하고 코드를 작성해보고 있습니다.
관리자 모드에서 전체 게시판을 생성, 관리하는 코드를 작성해보려는데
뜻밖의 에러를 만나서 여러분께 도움요청하게 되었습니다.

일단 manager.php 라는 Controller 소스입니다.

<?php
class Manager extends CI_Controller {
 
 function __construct()
 {     
  parent::__construct();
 }

 public function index($page='main', $method='board_config'){}

 public function main($page){}

 public function board_config($page, $method)
 {
  $this->load->model('Board');
  
  $board_act = $this->input->get('board_act');
  $atc_page = '';
  switch($board_act)
  {
   case 'BoardList' :
    $data['content'] = $this->Board->board_list();
    $atc_page = 'list';
    break;
   case 'BoardCreate' :
    $this->load->helper(array('form', 'url'));
    $this->load->library('form_validation');

    $this->form_validation->set_rules('b_id', '게시판 ID', 'required');
    if($this->form_validation->run() == FALSE)
    {
     $atc_page = 'create';
    }
    else
    {
     $atc_page = 'success';
    }
    break;
   default :
    $data['content'] = $this->Board->board_list();
    $atc_page = 'list';
    break;
  }
  $this->load->view('include/manager/header', $data);
  $this->load->view('board/'.$atc_page, $data);
  $this->load->view('include/manager/footer');
 }
 public function article($page, $method){}
}
목록은 잘나옵니다.
부연 설명 드리자면
if(@$this->input->post($__VIEWSTATE) == FALSE) 이부분은 포스트백인지 아닌지 확인하는 부분입니다.
그리고 일단 게시물 작성화면까지는 잘 나옵니다.
그런데 작성화면에서 submit을 하면
에러 메세지는 Undefined property: Manager::$form_validation 이고
내용은 Fatal error: Call to a member function set_rules() on a non-object
에러를 발생시키네요.
그래서 여러가지로 코드도 확인하고 수정해보다가 $this->load->model('Board'); 이부분을 삭제하고
(게시물 작성부분에서는 기본 로직이 돌아가는지 확인중이라서 Board 모델의 함수를 호출하지 않습니다.)
다시 게시물을 작성해보니 잘 작동하는 겁니다.
아래는 Board.php 모델의 소스입니다.
<?php
class Board extends CI_Controller {
 function __construct()
 {     
  parent::__construct();
 }
 public function board_list(){
  $where = "";
  $this->db->order_by('name', 'desc');
  $query = $this->db->get('board_config');

        return $query->result_array();
 }
 public function board_create(){
 }
 public function board_read(){}
 public function board_update(){}
 public function board_delete(){}
}
?>
분명 컨트롤러 자체는 제대로 작동하는것 같습니다.
Board 모델을 부르면 form_validation 라이브러리가 작동하지 않는것 같습니다.
입문자라서 어디가 잘못된건지 몇시간째 고민해도 답이 보이지 않네요.
제가 실수한 부분이 어디인지 도움 부탁드립니다.

태그 Undefined property,form_validation
 다음글 Heroku 에 코드이그나이터 사용가능한가요? (1)
 이전글 굉장히 많은 데이터를 처리 할시에..... (6)

댓글

변종원(웅파) / 2012/02/03 07:06:56 / 추천 0
 switch문중  BoardCreate 에 해당하는 부분에는 $data 변수가 없습니다.
변종원(웅파) / 2012/02/03 07:10:51 / 추천 0
그리고 모델은 extends CI_Model 입니다.
느림보 / 2012/02/03 09:32:06 / 추천 0

ㅜㅜ 저는 공부를 더 해야 하나봐요 폼검증은 아직 사용해보지 않아서 잘모르는 부분이지만 확실히 웅파님이 말씀하신대로 BoardCreate부분에서 $data 변수가 없네요....

하드코딩 / 2012/02/03 12:12:20 / 추천 0

헉;;; 정말 저런 되지도 않은 실수를 하고 여기다 도움을 요청했다니 부끄럽기 그지없네요 ㅠ
웅파님 감사드립니다. $data변수는 문의글 올릴때 가독성때문에 필요없는 부분들 빼고 올리느라 뺏는데
제가 왜 CI_Controller를 상속 받았을까요 -_-;;
너무 부끄러워 이 문의글 삭제하고 싶지만 혹시라도 이런 실수겪는분 있을까봐 그냥 남겨두어야겠습니다.
웅파님 다시 한번 감사드립니다~

변종원(웅파) / 2012/02/03 13:18:57 / 추천 0
하드코딩/ 있을 수 있는 실수입니다. ^^