2013-12-07 2 views
0

죄송합니다. 간단한 질문이지만 Codeigniter와 함께 Ion-Auth를 사용하여 로그인 한 사용자와 로그인하지 않은 사용자를 구별한다고 가정 해 봅니다.컨트롤러와 모델 간 데이터 이동 - Codeigniter 모범 사례

그리고 같은 사용자의 ID를 캡처하는 간단한 사용자 정의 컨트롤러가 내 일반 컨트롤러의와 그런

class MY_Controller extends CI_Controller { 
    function __construct() { 
     parent::__construct(); 
     global $data; 
      if($this->ion_auth->logged_in()){ 
      $data['logged'] = True; 
      $data['uid'] = $this->ion_auth->get_user_id(); 
      $data['username'] = $this->ion_auth->get_username(); 
     } 

     //User is Not Logged in 
     else{ 
      $data['logged'] = False; 
     } 
    } 
} 

I가 페이지를 뱉어 할을 로그인 한 사용자와 로그인 한하지 같은 사용자 ...

제 질문은 내 모델에 uid를 어떻게 전달해야합니까? 일부 모델은 $this->ion_auth->get_user_id(); 함수를 호출하지 않는 기본 CI 컨트롤러에 의해 호출됩니다. 기본 컨트롤러로 가서 모델에 uid를 전달해야합니까? 아니면 모델 내에서 $this->ion_auth->get_user_id(); 함수를 직접 호출해야합니까?

혼란에 대해 사과 드리며, 컨트롤러 및 모델을 엉망으로 만들거나 user_id가 필요하지 않으며 각 코드를 하드 코딩하지 않으려 고합니다.

답변

0

라이브러리를로드 할 필요가 없습니다. 모델은 컨트롤러에서 항상 호출되므로 컨트롤러에서 라이브러리를로드하기 만하면 해당 모델에서 사용할 수 있습니다.

그래서 코드

$this->ion_auth->get_user_id() 

당신이 중 하나를 할 수있는 컨트롤러

+0

나는 목표는 동일한 함수를 두 번 호출하지 않는 것입니다. 대신 get_user_id 함수에서 모델로 가져온 변수를 내 컨트롤러에 전달하려고합니다. get_user_id를 두 번 호출하는 것은 제어기에서 호출 한 다음 모형에 전달하는 것보다 비효율적 인 것처럼 보입니다. – user1011713

0

에 의해로드 된 모든 모델에서 작동합니다.

배열 내에서 모델과 user_id를 보내기가 힘듭니다. 모델을보다 깨끗하고 쉽게 읽을 수있게 해줍니다.

예 :

$data['uid'] = $this->ion_auth->get_user_id(); 
    $model_results = $this->some_model->get_data($data); 

그러나 다음과 같이 당신이 CI 인스턴스

시작

function __construct() 
{ 
    parent::__construct(); 

    $ci =& get_instance(); 

} 

와 모델을 통해 액세스 할 수 있습니다 후 나는 USER_ID에 액세스 할 수 있습니다 원하는 경우 :

$user_id = $CI->ion_auth->get_user_id(); 
+0

죄송합니다. 왜 모델에서 get_user_id를 다시 호출해야합니까? 내 컨트롤러에서 호출 한 다음 컨트롤러에서 모델 클래스로 전달하는 것이 좋습니다. – user1011713

+0

이것은 전적으로 귀하가 선호하는 것입니다. 귀하의 질문을 연구 할 때 가장 최근의 CI 응용 프로그램에서 모델에서 get_user_id를 호출 한 인스턴스가 0 인 것을 발견했습니다. 모든 모델은 컨트롤러에서 직접 수신합니다. – ssaltman