Comment puis-je utiliser de la session dans une bibliothèque dans CodeIgniter?
Je veux vérifier si l'utilisateur est connecté dans CodeIgniter par l'aide de ma bibliothèque dans le constructeur du contrôleur.
C'est ma bibliothèque:
class Administrator_libs {
public function validate_authen(){
if( $this->session->userdata('user_authen') ){
redirect(base_url().'admin/login/');
}
}
}
Et c'est mon contrôleur:
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');
}
}
Mais je reçois ce message d'erreur:
Undefined property: Administrator_libs::$session
Comment puis-je utiliser de la session dans une bibliothèque dans CodeIgniter?
OriginalL'auteur Chandara Sam | 2012-09-10
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez accéder à toutes CodeIgniter bibliothèque à l'intérieur de votre propre, vous devez appeler
get_instance()
. C'est parce que$this
est lié à votre bibliothèque, et non la CodeIgniter objet.Veuillez voir Création De Bibliothèques CodeIgniter Documentation. Plus précisément le contenu sous Utilisant CodeIgniter Ressources au sein de Votre Bibliothèque
Cela suppose que le chargement automatique de la session de la bibliothèque dans
config/autoload.php
, si non, vous devrez également ajouter$CI->load->library("session");
après$CI
de l'instanciation.IMPORTANT:
=&
n'est pas une faute de frappe. Il est passé par référence pour économiser de la mémoire.OriginalL'auteur Jordan Arseno
Vous suffit de vous rendre application/autoload.php et d'ajouter votre chargement automatique de paquet qui devrait ressembler à peu près comme ceci :
$autoload['packages'] = array('database','form_validation','session','email');
vous pouvez le voir il est session paquet que j'ai ajouté dans mes paquets. Maintenant, pour en venir à votre constructeur, vous devez charger ce package en ajoutant ceci :
$this->load->library("session");
$CI =& get_instance()
pour accéder à cette bibliothèque dans une autre bibliothèque.OriginalL'auteur hathlogic
Session et tout autre lib /helper , etc s'étend de CI_Controller /CI_Model /etc...
Si vous essayez d'utiliser
$this->whatever
sur une bibliothèque qui ne s'étend à partir de cet IC modules, vous obtiendrez l'erreur.La Jordanie dit, vous pouvez utiliser get_instance.
OriginalL'auteur Italo Hernández