Le navigateur:
Impossible de localiser la classe spécifiée: Session.php
Ceci est mon contrôleur:
<?php
class Chat extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('Chat_model');
}
public function index() {
$this->view_data['chat_id'] = 1;
$this->view_data['student_id'] = $this->session->userdata('student_id');
$this->view_data['page_content'] = 'chat';
$this->load->view('chat');
}
public function ajax_addChatMessage() {
$chat_id = $this->input->post('chat_id');
$student_id = $this->input->post('student_id');
$bericht = $this->input->post('chat_id', TRUE);
$this->Chat_model->addChatMessage($chat_id, $student_id, $bericht);
}
}
Lorsque je mets mon modèle en commentaire dans parent::__construct(); // $this->load->model('Chat_model');
, l'erreur disparaît.
C'est mon Chat_model:
<?php
class Chat_model extends CI_Controller {
public function Chat_model() {
parent::__construct();
}
public function addChatMessage($chat_id, $student_id, $bericht) {
$query = "INSERT INTO tbl_chatberichten (chat_id, student_id, bericht) VALUES (?,?,?)";
$this->db->query($query, array($chat_id, $student_id, $bericht));
}
}
class Chat_model extends CI_Controller
devrait être
class Chat_model extends CI_Model
Si vous utilisez Codeigniter Modular Extensions HMVC cette erreur peut se produire si vous oubliez de changer votre classe pour étendre MX_Controller au lieu de CI_Controller
Donc dans votre cas, vous commenceriez votre cours avec:
class Chat extends MX_Controller {}
Au lieu de:
class Chat extends CI_Controller {}
J'espère que cela aidera quelqu'un qui rencontre le même problème
Ajoutez des modifications dans les configurations de votre bibliothèque dans le fichier application/config/autoload.php
$autoload['libraries'] = array('database', 'session');
et dans application/config/config.php, définissez la clé de cryptage (n'importe quelle clé)
$config['encryption_key'] = 'thu23456789#[n,';
Si vous obtenez toujours la même erreur, alors copiez Système/bibliothèque/Session/Session.php vers Système/bibliothèque/dossier, puis le devrait marcher
Ma solution: Préface: Si vous n'utilisez pas de points d'ancrage, ce ne sera pas la solution.
J'avais le même problème après la mise à niveau vers la v3.0.6 et j'avais définitivement tout configuré correctement, car il s'agit d'un site existant en cours de mise à niveau vers la v3 +. Mon problème se résumait aux crochets que j'avais chargés de «pré-contrôleur». Mes crochets ont fonctionné avec la v 2.0.X de CodeIgniter, mais pas avec la v3 +.
Si vous chargez des points d'ancrage avant que la classe de session ne soit chargée et que votre point d'ancrage a une dépendance sur la classe de session, cela peut être votre coupable. Essayez de changer les points d'ancrage pré-contrôleur en post-contrôleur ou de les commenter complètement pour voir si cela résout votre problème. Tout cela se trouve dans application/config/hooks.php.
Ajoutez ceci à la place de votre constructeur de contrôleur de conversation
public function __construct() {
parent::__construct();
$this->load->library('session');
$this->load->model('Chat_model');
}
Ceci charge la bibliothèque de sessions sur votre contrôleur afin que vous puissiez utiliser les méthodes.
Dans votre modèle de chat, essayez de remplacer class Chat_model extends CI_Controller
par class Chat_model extends CI_Model
.
Dans mon cas, le nom de la bibliothèque et le nom de la classe du contrôleur étaient identiques, à savoir mon nom de classe de contrôleur était Ajaxer
et mon nom de classe de bibliothèque était également Ajaxer
. J'ai changé le nom de ma classe de bibliothèque en Ajaxer_lib
et le problème a été résolu.
Le modèle étend le modèle CI_Model et non le contrôleur_CI
Changer la configuration de votre bibliothèque de chargement dans le fichier application/config/autoload.php
$autoload['libraries'] = array('database', 'session');
Dans application/config/config.php
définir la clé de cryptage (n'importe quelle clé)
$config['encryption_key'] = 'thu23456789#[n,';