2014-03-04 2 views
0

이것은 기본적인 Codeigniter (또는 PHP) 질문 일 수 있지만 사용자가 모든 페이지 호출에 대해 Ion Auth로 로그인했는지 확인하려고하고 있으므로 'Sign- '또는'로그 아웃 '링크를 클릭하십시오.MY_Loader 클래스의 Ion Auth check 로그인

내가 MY_Loader 클래스에서로드 내 헤더, 콘텐츠 및 바닥 글의 전망을 가지고 있고 사용자가 로그인되어 있는지 확인하는 $this->ion_auth->logged_in()를 사용하려고했지만, 나는이 PHP 오류가 발생,

여기

PHP Error: Undefined property: MY_Loader::$ion_auth

가 MY_Loader입니다 .php :

<?php 

/** 
* /application/core/MY_Loader.php 
* 
*/ 
class MY_Loader extends CI_Loader { 
    public function template_main($template_name, $vars = array(), $return = FALSE) 
    { 
     $vars['signin'] = $this->ion_auth->logged_in() ? 'signout' : 'signin'; 
     $vars['signin_text'] = $this->ion_auth->logged_in() ? 'Sign-out' : 'Sign-in'; 
     $content = $this->view('frontend/main_template/header', $vars, $return); 
     $content .= $this->view($template_name, $vars, $return); 
     $content .= $this->view('frontend/main_template/footer', $vars, $return); 

     if ($return) 
     { 
      return $content; 
     } 
    } 
} 

/* End of MY_Loader.php */ 
/* Location: ./application/core/MY_Loader.php */ 

나는 ion_auth 라이브러리를 자동로드하고 있습니다. MY_Loader 클래스에서 logged-in() 함수를 호출하려면 어떻게해야합니까?

답변

2

자동로드 된 파일이 아직로드되지 않은 것 같습니다. 메소드 상단에 $ this-> load-> library ('ion_auth')를 추가하십시오.

+0

나는 그것을 생각했다. 그런 다음 또 다른 오류가 발생합니다. '정의되지 않은 속성 : MY_Loader :: $ load' – mjpsr11

+0

알았어, 알아 냈다고 생각해. $ this를 사용하는 대신 새로운 객체 변수'$ ia = new ion_auth();를 생성하고 $ ia-> ion_auth-> logged_in()을 사용했습니다. 이것은 예상대로 작동했습니다. 아마도 누군가 Codeignitor에 이것이 필요한 이유를 설명 할 수 있습니다. – mjpsr11

+0

대신 사용해보십시오. $ ci = & get_instance(); $ ci-> ion_auth-> logged_in(); –

0

편집 : 질문을 잘못 읽었습니다. 미안합니다. 하지만 나는 미래의 독자들에게 도움이 될만한 답변을 남겨두고 있습니다. 후크를 사용하여 문제를 해결하십시오.

내 제안은 사용자가 컨트롤러의 생성자 메소드에서 로그인했는지 여부를 간단히 확인하고 그 결과를 클래스 변수에 저장하는 것입니다.

$this->user_logged_in = (bool)$this->ion_auth->logged_in(); 

이 각 뷰 (유지 관리가 용이하고 뷰에서 기본 ACL/논리를 유지)에 대해 한 번 각 컨트롤러에 대해 한 번 전화를 걸 수 있도록 대신합니다. 변수를 뷰에 전달하면됩니다. 내가 로그인을 필요로 전체 응용 프로그램을 할 때 뭘하려는

$data['user_logged_in'] = $this->user_logged_in; 
$this->load->view('view_file_name', $data); 

는 CodeIgniter의의 hooks를 통해 확인 이러한 유형의 호출하는 것입니다. 이 경우 post_controller_constructor 후크가 자동으로 호출됩니다.이 체크를 무시하려는 페이지를 필터링해야합니다 (예 : 로그인 & 등).