Codeigniter - 扩展控制器不起作用

时间:2012-08-15 09:56:52

标签: php codeigniter extending

我正在尝试使用我自己的类扩展控制器,该类扩展了默认的CI_Controller类。除非它不起作用。

它说它无法找到我的子类。我的子类位于application / core中,名为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 个答案:

答案 0 :(得分:3)

如果您希望CI选择扩展课程,则必须将其命名为MY_ControllerMY_部分是可配置的,但其他部分不是。

MY_部分来自config/config.php:

$config['subclass_prefix'] = 'MY_';

答案 1 :(得分:3)

您应该在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中执行此操作的正确方法,而不是在包含一个的第一个答案中提到的。

答案 2 :(得分:2)

您需要在子类(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
}