web-dev-qa-db-fra.com

Impossible de localiser la classe spécifiée: Session.php dans Codeigniter

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));

    }

}
5
thais
class Chat_model extends CI_Controller

devrait être

class Chat_model extends CI_Model
14
Tpojka

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

9
Portable Page

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

3
sandeep

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.

1
Joey D

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.

0
Harigovind R

Dans votre modèle de chat, essayez de remplacer class Chat_model extends CI_Controller par class Chat_model extends CI_Model.

0
mr_afry

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.

0
Shahid Hussain Aali

Le modèle étend le modèle CI_Model et non le contrôleur_CI

0
Deepak singh Thakur

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,';
0
Sathya Baman