2016-08-02 58 views
0

我在CodeIgniter中創建了一個控制整個管理員的控制器。如果需要,它將加載另一個控制器,具體取決於URL。它工作正常,但由管理員控制器加載的控制器無法訪問數據庫。CodeIgniter控制器無法加載數據庫

這是我的代碼在管理控制器加載必要的控制器。

public function renderAdmin(){ 
    $get=$this->input->get(); 
    if (!empty($get['module'])){ 
     $module=$get['module']; 
    } 
    else{ 
     $module=""; 
    } 
    if (!empty($module)){ 
     if (!empty($get['method'])){ 
      $method=$get['method']; 
     } 
     else{ 
      $method="index"; 
     } 
     $module=modules::load($module."/".$module); 
     if (!method_exists($module, $method)){ 
      $method="index"; 
     } 
     $module->$method(); 
    } 
    else{ 
     $data['screen']=$this->config->item('foo_template_dir_admin')."index"; 
     $data['menuPoints']=self::getMenuPoints(); 
     $this->load->view($this->config->item('foo_template_dir_admin') . "frame", $data); 
    } 
} 

當我加載例如標籤控制器,它無法加載數據庫。

public function index(){ 
    $data['menuPoints']=Admin::getMenuPoints(); 
    $data['screen']=$this->config->item('mindenrekepes_template_dir_admin')."tags/index"; 

    var_dump($this->db); // NULL 

    $this->load->view($this->config->item('mindenrekepes_template_dir_admin')."frame", $data); 
} 

該數據庫位於自動加載文件中,因此它將被加載。

在管理員控制器或其中一個模型中,我可以訪問數據庫,因此數據庫配置和自動加載也適用於主控制器。

你知道會是這個問題嗎?我希望有人能幫助我解決這個問題。

+0

這是自動加載和正常工作,但只有主控制器具有$ DB屬性和其他人沒有。 – kukko

+0

我發現這個問題,因爲HMVC擴展我會擴展MX_Controller而不是MY_Controller。對不起,我沒有在問題中提到如何使用HMVC。但是我接受@ g9m29的回答,因爲這真的很有幫助。 – kukko

回答

1

您可以進一步改進您的應用邏輯設計,因爲我認爲這不是最佳選擇。爲了您的需要,儘管您可以嘗試使用此方法。

private static $db; 
    function __construct() { 
    parent::__construct(); 
    self::$db = &get_instance()->db; 
    } 

嘗試添加私有靜態$ db變量到您的控制器並在__construct中創建一個數據庫實例。然後,你可以繼續使用你的數據庫像self::db->get()->result()-> etc.

+0

我會在每個由主控制器加載的控制器中加入這個功能嗎? – kukko

+0

它沒有工作,我仍然在$ db屬性的每個控制器中都爲null。 – kukko

+0

是的,除了你的控制器之外,每個控制器都可以使用所有CI的資源。如果這些控制器是從CI內部調用的,並且是CI的「通用」控制器,並且擴展了主CI_Controller或MY_Controller,那麼請爲您的主控制器和一個子控制器提供完整的代碼,以便我們可以看到耦合錯誤的位置。 – g9m29

0

試試這個在構造:

function __construct(){ 
$this->load->database(); 
} 
+0

我已經試過這個,並沒有工作。 – kukko

相關問題