2012-09-10 5 views
8

मैं यह जांचना चाहता हूं कि नियंत्रक के कन्स्ट्रक्टर में मेरी लाइब्रेरी का उपयोग करके कोडइग्निटर में उपयोगकर्ता लॉग इन है या नहीं।कोडइग्निटर में लाइब्रेरी में सत्र का उपयोग कैसे कर सकता हूं?

यह मेरा पुस्तकालय है:

class Administrator_libs { 

    public function validate_authen(){ 
     if($this->session->userdata('user_authen')){ 
      redirect(base_url().'admin/login/'); 
     } 
    } 
} 

और ये मेरे नियंत्रक है:

class Administrator extends CI_Controller { 

    public function __construct(){ 
     parent::__construct(); 
     $this->load->library('administrator_libs'); 
     $this->administrator_libs->validate_authen(); 
     $this->load->model('mod_menu'); 
    } 
} 

लेकिन मैं इस त्रुटि संदेश मिलता है:

Undefined property: Administrator_libs::$session 

कैसे मैं एक में सत्र का उपयोग कर सकते CodeIgniter में लाइब्रेरी?

उत्तर

28

यदि आप किसी भी कोडइग्निटर लाइब्रेरी को अपने आप में एक्सेस करना चाहते हैं, तो आपको get_instance() पर कॉल करना होगा। ऐसा इसलिए है क्योंकि $this आपकी वर्तमान लाइब्रेरी से जुड़ा हुआ है, न कि CodeIgniter ऑब्जेक्ट।

$CI =& get_instance(); 
if($CI->session->userdata('user_authen')){ 
    redirect(base_url().'admin/login/'); 
} 

कृपया Creating Libraries कोडइग्निटर दस्तावेज़ीकरण देखें। विशेष रूप से के तहत सामग्री लाइब्रेरी

भीतर CodeIgniter संसाधनों के उपयोग यह आपको config/autoload.php में सत्र पुस्तकालय AutoLoad, अगर नहीं, तो आप भी $CI इन्स्टेन्शियशन के बाद $CI->load->library("session"); जोड़ने की आवश्यकता होगी मान लिया गया है।

महत्वपूर्ण:=& एक टाइपो नहीं है। यह स्मृति को बचाने के संदर्भ में पारित किया गया है।

0

आप बस आवेदन/autoload.php पर जाएं और अपनी autoload पैकेज है जो कुछ इस तरह की तरह दिखना चाहिए जोड़ना चाहिए: $autoload['packages'] = array('database','form_validation','session','email');

कि आप देख सकते सत्र पैकेज कि मैं अपने संकुल में जोड़ा है। अब आप अपने निर्माता के लिए आ रहा तो आप इस जोड़कर इस पैकेज लोड होनी चाहिए: $this->load->library("session");

0

सत्र और किसी भी अन्य lib/सहायक, आदि CI_Controller/CI_Model/आदि से फैली ... आप एक पर $this->whatever उपयोग करने के लिए कोशिश कर रहे हैं लाइब्रेरी जो इस सीआई मॉड्यूल में से किसी से विस्तारित नहीं होती है, आपको त्रुटि मिल जाएगी। जैसा कि जॉर्डन कहता है, आप get_instance का उपयोग कर सकते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे