Браузер:
Не удалось найти указанный класс: Session.php
Это мой контроллер:
<?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); } }
Когда я помещаю свою модель в комментарий в parent::__construct(); // $this->load->model('Chat_model');
parent::__construct(); // $this->load->model('Chat_model');
ошибка исчезла.
Это мой 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
должно быть
class Chat_model extends CI_Model
Если вы используете модульные расширения Codeigniter HMVC, эта ошибка может возникнуть, если вы забудете изменить свой класс, чтобы расширить MX_Controller вместо CI_Controller
Поэтому в вашем случае вы начнете свой класс с:
class Chat extends MX_Controller {}
Вместо:
class Chat extends CI_Controller {}
Надеюсь, это поможет кому-то, кто сталкивается с тем же вопросом
Добавить изменения в конфигурации вашей библиотеки в файле application / config / autoload.php
$autoload['libraries'] = array('database', 'session');
и в приложении / config / config.php задайте ключ шифрования (любой ключ u нравится)
$config['encryption_key'] = 'thu23456789#[n,';
Если вы все равно получите ту же ошибку, то скопируйте System / library / Session / Session.php в System / library / folder, тогда она должна работать
Мое решение: Предисловие: если вы не используете крючки, это не будет решением для вас.
У меня была эта же проблема после обновления до версии 3.0.6, и я определенно правильно настроил все, так как это уже существующий сайт, обновляемый до версии v3 +. Моя проблема сводилась к крючкам, которые я загрузил «предварительный контроллер». Мои крючки работали с v 2.0.X CodeIgniter, но не с v3 +.
Если вы загружаете крючки перед загрузкой класса сеанса, и ваш крючок имеет зависимость от класса сеанса, это может быть вашим преступником. Попытайтесь изменить любые крючки перед контроллером на пост-контроллер или полностью закомментируйте их, чтобы узнать, устраняет ли это проблему. Все это находится в приложении / config / hooks.php.
Измените конфигурацию библиотеки загрузки в файле application/config/autoload.php
$autoload['libraries'] = array('database', 'session');
В application/config/config.php
задайте ключ шифрования (любой ключ u, как)
$config['encryption_key'] = 'thu23456789#[n,';
Добавьте это вместо своего конструктора контроллера чата
public function __construct() { parent::__construct(); $this->load->library('session'); $this->load->model('Chat_model'); }
Это загружает библиотеку сеансов на ваш контроллер, чтобы вы могли использовать эти методы.
Модель расширяет CI_Model Не класс CI_Controller Chat_model расширяет CI_Model {………….}
Измените конфигурацию вашей библиотеки в файле application / config / autoload.php
$autoload['libraries'] = array('database','ci_session');
Установите ключ шифрования для вашего приложения в application / config / config.php
$config['encryption_key'] = 'sdjfkdjkfj';
Копировать систему / libararies / Session / Session.php в приложение / библиотеки / Переименовать приложение / библиотеки / Session.php на CI_Session.php
Теперь объект CI_Session будет доступен через нижнюю строку
$this->ci_session