CI 묻고 답하기

제목 컨트롤러 내 모델 호출 시 오류가 뜹니다.
글쓴이 toryjin 작성시각 2013/06/16 20:40:11
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 14397   RSS
 m_setmodel.php 파일로 model 폴더에 만들고,
 
class M_setmodel extends CI_Model{
function __construct()
    {
        parent::__construct();
    }
 
function get_menues(){
내용
}
}

로 만들었습니다.

cmcontents.php 로 컨트롤러를 만들고

class Cmcontents extends CI_Controller {

public function __construct(){
parent::__construct();
}
public function index($pid=0,$id=0){
//$this->getText($pid,$id);
}
public function contents($pid=0,$id=0)
{
$this->load->model('M_setmodel');   
$data["cmenu"] = $this->m_setmodel->get_menues($pid);
$this->load->view('content/common_content',$data);
}
}

로 만들었습니다.

이렇게 만들면

Undefined property: Cmcontents::$m_setmodel

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

라고 에러가 뜹니다.


하도 이상해서 


$data["cmenu"] = $this->m_setmodel->get_menues($pid);

이 부분을 

$CI =& get_instance();
$data["cmenu"] = $CI->m_setmodel->get_menues($pid);

로 해서 작업을 하면 

정상 작동을 합니다. 

이상하게 $this로 호출한 모델을 

$this로 모델 내 메서드 접근이 안되는 걸까요 ㅜㅠ??


고수님들의 많은 도움 부탁드립니다.;;





 
 다음글 Model을 Autoload할 때 (7)
 이전글 db 수정시 is_unique 질문요. (2)

댓글

변종원(웅파) / 2013/06/16 20:45:35 / 추천 0
매뉴얼 다시 한번 잘 보시기 바랍니다. 대문자로 해야할 부분과 소문자로 해야할 부분. 모델은 소문자이고 로딩은 대문자이니 에러기 말 수밖에 없습니다.
toryjin / 2013/06/17 03:36:32 / 추천 0
 to 변종원 님

말씀해주신 대로 대소문자 명칭을 다시 해서 해봤습니다.

m_user.php 의 모델 파일명을 가지고
class M_user extends CI_model{}로 선언했습니다.
컨트롤러 호출시 
$this->load->model("M_user");
$data = $this->M_user->login();
이렇게 해주었구요...;;

그런데도 같은 
Undefined property: Cmcontents::User::$M_user

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

오류가 뜹니다 ㅜㅠ;;

이상하게 $CI =& get_instance(); 를 해주고 

$CI->load 식으로 해주면 오류가 없구요 ㅜㅠ;;

좀더 자세한 조언 부탁드리겠습니다;;





 
변종원(웅파) / 2013/06/17 09:17:50 / 추천 0
php버전, ci버전 올려주세요. 새로 만드시는건지 기존 소스 수정중인지도 올려주시구요
toryjin / 2013/06/17 11:59:07 / 추천 0
 to 변종원 님

안녕하세요?

PHP 는 5.3.13p1이고 CI는 2.1.3 입니다. (카페24 호스팅 중입니다.)

기존 소스는 어느걸 말씀이신지 모르겠지만,

일단 제가 처음부터 만들고 있는 사이트 입니다 ㅜㅠ

전에 몇번 CI 로 작업을 한적은 있는데 이런 경우는 처음이네요 ㅜㅠ;;

제대로 터득 안한채 작업을 해서 그런것 같습니다.

많은 도움 부탁드리겠습니다 ㅜㅠ



변종원(웅파) / 2013/06/17 12:41:30 / 추천 0
웹호스팅이면 database.php의 pconnect가 true로 되어 있는지도 보세요.
false이어야 정상작동합니다.

새로 올리신건지 유지보수중인건지 물어본겁니다. ^^

아직도 대소문자 틀린거 같습니다.


m_user.php 모델 파일 이면
class M_user extends CI_Model{}로 선언이 맞구요
컨트롤러 호출시 
$this->load->model("m_user");
$data = $this->m_user->login(); 으로 사용해야 합니다.

결론은 모델 로딩문제입니다.


toryjin / 2013/06/23 20:20:00 / 추천 0
 to 변종원 님. 

 안녕하세요?
답이 늦어서 죄송합니다.

매번 친절한 답변에 감사드립니다.

안타깝게도... 알려주신 모델 호출 방법대로 해도 같은 문제가 생깁니다....
pconnect 도 false 이구요...

정확한 원인을 몰라서 결국 get instance 로 해서 사용하고 있습니다 ㅜㅠ 

친절한 답변에 다시한번 감사드립니다 ㅜㅠ
변종원(웅파) / 2013/06/24 09:27:52 / 추천 0
ci 파일을 다시 올려보는게 좋겠네요