2012-08-15 105 views
2

我想扩展一个控制器与我自己的类,它扩展了默认的CI_Controller类。除非它不起作用。Codeigniter - 扩展控制器不工作

它说它无法找到我的子类。我的子类位于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

您应该为您的core文件夹 中的文件,这样My_Controller.php,然后键入您的代码像

if (!defined('BASEPATH')) exit('No direct script access allowed'); 

class My_Control_Panel extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

,这是正确的在CodeIgniter中做这件事的方法,并不像第一个答案中提到的那样。

+0

这也适用。谢谢。 :) – DijkeMark 2012-08-15 13:37:04

+0

欢迎:) – zaherg 2012-08-15 15:03:46

+0

是'核心'文件夹这样的类的正确位置? – Matthew 2012-08-17 08:00:11

2

你需要包含在子类(Developers)父类(My_Control_Panel),像这样:

if (!defined('BASEPATH')) exit('No direct script access allowed'); 

include_once '../path/to/mycontrolpanel.php'; 

class Developers extends My_Control_Panel 
{ 
    // whatever 
} 
+0

但是CodeIgniter的用户指南中没有提及。你确定这是正确的方法吗? – DijkeMark 2012-08-15 10:02:30

+0

这是我过去的做法。 – Matthew 2012-08-15 10:04:07

+0

它适用于我,但我仍然怀疑这是最好的方法。无论如何谢谢。 :) – DijkeMark 2012-08-15 10:08:40

3

如果你想CI拿起你的扩展类,你将不得不将它命名MY_ControllerMY_部分是可配置的,但其他部分不是。

MY_部分来形成config/config.php:

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

是的,我试图改变它和东西,但它无法找到我的子类 – DijkeMark 2012-08-15 10:09:04

+0

这通常最终是一个小/大写问题,你的例子具有'我''小写'y'。也许这就是原因。 (或可能是你的配置有'My_') – complex857 2012-08-15 10:11:17

+0

对不起,这是一个复制错误。 :)在我的代码是MY_ – DijkeMark 2012-08-15 10:13:23