2012-08-15 108 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