질문 Q #9392
ci 2.0.2 controller에서 모델 못불러오는 현상
똥파리 2011-07-29 11:20:42

class Api extends MY_Controller
{
 function __construct()
 {
  parent::__construct();
  $this->load->model("common_model", "comm");
 }
 function test()
 {
  //$this->load->model("common_model", "comm");
  $this->comm->set_attr("testattr", "aaaaaa");
  echo $this->comm->get_attr("testattr");
 }
}

먼저 controller를 상속받아 core/MY_controller에서 추가적으로 필요한 항목들을 정의하고
위와 같은 콘트롤러를 만들어 사용중에 있습니다.
일단 동작에는 문제가 없는데요.

위의 내용중에 model을 메소드에서 호출하면(주석처리되어 있는), 모델의 함수를 찾지 못하는 현상이 존재합니다.
(Call to a member function set_attr() on a non-object )

근데 동일한 소스를 apmsetup으로 환경을 구축한 클라이언트(개인컴)에서는 이상없이 호출이 됩니다.
유독 서버에 업로드를 했을 경우 콘트롤러 메소드에서 로드 모델을 하게되면, 모델의 메소드를 호출못하는 현상이 존재하는데
왜이럴까요?
 

답변 4
#1 변종원(웅파) 2011-07-29 18:01:07
대소문자 잘못쓰신거 아닌가요? 윈도우에서는 대소문자 구분 안하지만 리눅스에서는 체크합니다
#2 다리펙토리 2011-07-29 18:03:34
맨위에 생성자에 true 이거 빠진거 같은데...
#3 똥파리 2011-08-01 11:15:21
답변감사합니다.

위에 작성한데로 __construct 안에서 모델을 호출( $this->load->model("common_model", "comm");
)하면 소스는 정상적으로 동작합니다.
하지만, test에서 모델을 호출해서 사용하면, 멤버 함수를 호출 할 수 없다라는 메세지가 떠버리는 것이니
대소문자 문제는 아니라고 생각됩니다.

다리펙토리님. 생성자에 true가 빠졌다고 하셨는데, 부모생성자호출시 parent::__construct(true); 요렇게 해야 한다는 말씀이신지요? 일단 넣어 봤으나 변화는 없네요.
#4 변종원(웅파) 2011-08-01 11:51:46
MY_Controller 의 내용을 올려주셔야 답변이 가능할 것 같네요.
CI_Controller로 이용하는 경우에는 문제가 없으니 MY_Controller 에서 어떤 내용때문에 그럴 수 있을거라고 추측이 됩니다.