Контроллер расширения Codeigniter не работает
Я пытаюсь расширить контроллер своим собственным классом, который расширяет класс CI_Controller по умолчанию. Только это не работает.
Он говорит, что не может найти мой подкласс. Мой подкласс расположен в приложении/ядре и называется My_Control_Panel.
Мой класс, который распространяется на мой подкласс:
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Developers extends My_Control_Panel
{
public function __construct()
{
parent::__construct();
$this->load->helper('form');
$this->load->helper('url');
$this->load->database();
$this->checkIfLoggedIn();
$this->checkIfAllowedToViewPage();
}
Мой подкласс:
if (!defined('BASEPATH')) exit('No direct script access allowed');
class My_Control_Panel extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
}
Он продолжает говорить, что не может найти мой подкласс, хотя он должен работать.
3 answers
Вы должны назвать свой файл так My_Controller.php
внутри вашей папки core
, а затем ввести свой код, например
if (!defined('BASEPATH')) exit('No direct script access allowed');
class My_Control_Panel extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
}
И это правильный способ сделать это в CodeIgniter, а не так, как указано в первом ответе с включением..
Если вы хотите, чтобы CI выбрал ваш расширенный класс, вам придется назвать его MY_Controller
. Часть MY_
настраивается, но другие части - нет.
Часть MY_
приходит из config/config.php:
$config['subclass_prefix'] = 'MY_';
Вам нужно будет включить родительский класс (My_Control_Panel
) в подкласс (Developers
), например:
if (!defined('BASEPATH')) exit('No direct script access allowed');
include_once '../path/to/mycontrolpanel.php';
class Developers extends My_Control_Panel
{
// whatever
}