CI 묻고 답하기

제목 모델은 컨트롤러에서 밖에 안불러 지나요?
카테고리 일반
글쓴이 정수리 작성시각 2017/05/19 17:53:37
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 313   RSS

메뉴얼을 읽어보니 컨트롤러에서만 불러진다는 말은없고

 

주로 컨트롤러에서 호출된다고 써져 있는데 그렇다면

 

다른곳에서 호출이 가능하다는 말일까요?

 

현재 만들려는 것이

 

사용자가 페이지 접속하면

 

사용자의 ip, 브라우저정보, 이전페이지의 주소를 가져와 DB에 저장할려고 합니다

 

위의 절차를 라이브러리에서 할려고 하는데

 

라이브러리에서 모델을 호출할려고 하니 $load에 에러가 출력되네요;;

 

모델의 파일명은 소문자로 만들었습니다.

 

class Log 
{
	public function get_info(){
		$this->load->model('login_m');
                $this->login_m->test();
    }
}

class Login_m extends CI_Model
{	
	public function __construct(){
		
		parent::__construct();

	}

 	function test(){
 		echo 'test';
 	}
}

 

 다음글 코드이그나이터로 handsontable을 사용하고 있습... (2)
 이전글 base_url값을 상수로 지정하여 사용할수 없을까요? (2)

댓글

개락 / 2017/05/19 20:44:15 / 추천 0
$CI =& get_instance();

이부분이 필요하신게 아닌가 싶네용..

http://www.ciboard.co.kr/user_guide/kr/general/creating_libraries.html

$CI =& get_instance();

$CI->load->model(모델명);

 

jcoop / 2017/05/19 23:50:27 / 추천 0

컨트롤러를 controllers/에 폴더명(여기서는 example)으로 넣고, views밑에 해당 폴더(여기서는 example)를 만듭니다. 해당 폴더명으로 컨트롤러를 만들고, 컨트롤러의 index()함수의 view()를  $this->load->view('example/index'); 이렇게 해주면 이동을 하겠죠?

 사용자의 정보 ip,브라우저정보, 이전페이지의 주소는 아마 세션에 저장할 수 있을 것 같네요. 그렇다면, 컨트롤러나 모델에서 $this->load->library('session') 으로 세션을 사용할 수 있게 만든 뒤에, 저장할 값을 세션라이브러리에서 찾아본 후, 저장시키면 될 것 같다는 생각이 듭니다. 

페이지에 접속만해서 세션이 만들어진다는 것은 좀 어렵겠다. 무작정 이런 생각이 드네요. 

 

 모델을 컨트롤러에서만 부를 수 있나? 이것은 아닌 것 같습니다. 

 실제 모델에서 echo를 사용했는데, html에 echo가 나왔거든요. 해당 모델 클래스를 사용할 때에 쓰는 이 부분. 

( 코드이그나이터 한글메뉴얼 참고했습니다. http://www.ciboard.co.kr/user_guide/kr/tutorial/news_section.html이 부분에 나오는 내용입니다.)

 $this->load->model('news_model');

위의 부분역시, 컨트롤러의 함수에서 사용이 가능했었거든요. 그렇다면, 아마 html페이지(index.php)에서도 사용가능할거라는 생각이 듭니다.