2012-06-19 3 views
0

CodeIgniter에서 사용자 정의 사용자 라이브러리를 만들려고합니다. 이 라이브러리에서는 다른 CodeIgniter 라이브러리와 도우미를 사용하고 싶지만 오류가 발생합니다. 다음은 내가 취한 조치입니다 :CodeIgniter 용 사용자 라이브러리의 CI 인스턴스

  1. User.php 파일에 User 클래스를 생성하고이를 applications/libraries /에 업로드했습니다.

  2. 내부 application/config/autoload.php 사용자 라이브러리를 자동로드하고 있습니다.

    $this->user->create_login_form() 
    

    그것은 방법처럼 보인다 : 나는 create_login_form 메서드를 호출 사용하고 나의보기 중 하나에서 다음

    <?php 
    
        class User { 
    
        private $CI; 
    
         public function __construct() 
         { 
          $this->CI =& get_instance(); 
          $this->CI->load->helper('form'); 
         } 
    
         public function create_login_form() 
         { 
          echo 'hello'; 
          echo $this->CI->form->form_open(); 
         } 
    
        } 
    
    /* End of file User.php */ 
    

    : 여기

은 내 사용자 라이브러리 코드 hello가 에코되고 있기 때문에 호출되고 있지만 다음 형식의 도우미 form_open 메서드를 사용하면 다음 오류가 발생합니다.

A PHP Error was encountered Severity: Notice Message: Undefined property: Home::$form Filename: libraries/User.php Line Number: 46

Fatal error: Call to a member function form_open() on a non-object in .../application/libraries/User.php on line 46

내가 잘못하고있는 아이디어가 있습니까?

감사합니다.

답변

1

도우미는 어떤 개체의 기능이 아니라 기능을 제공합니다. Form 헬퍼가로드 된 후 form_open()을 직접 사용할 수 있습니다.

+0

대만족 감사 Narf! CodeIgniter를 사용하여 시작하기 만하면 모든 것을 감쌀 필요가 있습니다. 후속 질문 : 라이브러리 메소드를 사용하려면 $ this-> CI-> library-> method()를 사용해야합니다. – GregoryLG

+0

예. 또 다른 메모 - 양식 도우미가 필요하고 * 사용자 * 라이브러리가 자동로드되도록 설정되어 있으면 양식 도우미를 자동로드해야하므로 get_instance()를 사용할 필요가 없습니다. – Narf

+0

굉장하고 충고에 감사드립니다! 마지막으로 헬퍼를 자동 로딩하는 방법을 통해 get_instance()와 CI 객체에 대한 참조를 전달하고 헬퍼가 _functions_으로 모든 코드에서 사용할 수 있도록 보게됩니다. 그러나 세션 라이브러리를 사용할 것이라는 것을 알고 있다고 말합니다. 세션 라이브러리를 자동로드하더라도 사용자 정의 라이브러리 내에서 CI Object에 대한 참조를 가져 와서 Session의 _methods_에 도달해야합니까? – GregoryLG

1
class User { 

    private $CI; 

    public function __construct() 
    { 
     $this->CI =& get_instance(); 
     $this->CI->load->helper('form'); 
    } 

    public function create_login_form() 
    { 
     echo 'Title'; 
     echo form_open(); // Form open is helper. Not library 
     echo 'Write something'; 
     echo form_close(); // Produces a closing </form> tag. 
    } 

} 
2
class User { 

    public function __construct() 
    { 
     $CI =& get_instance(); 
     $CI->load->helper('form'); 
    } 

    public function create_login_form() 
    { 
     echo 'Title'; 
     echo form_open(); // Form open is helper. Not library 
     echo 'Write something'; 
     echo form_close(); // Produces a closing </form> tag. 
    } 

} 
관련 문제