2

我正在尝试用我自己的类扩展一个控制器,该类扩展了默认的 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();
    }
}

它一直说它找不到我的子类,但它应该可以工作。

4

3 回答 3

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

于 2012-08-15T12:51:55.480 回答
3

如果您希望 CI 接听您的扩展课程,您必须为其命名MY_Controller。该MY_部分是可配置的,但其他部分不是。

MY_部分来自于config/config.php:

$config['subclass_prefix'] = 'MY_';
于 2012-08-15T10:03:33.677 回答
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
}
于 2012-08-15T10:00:39.620 回答