簡體   English   中英

CodeIgniter控制器無法加載數據庫

[英]CodeIgniter controller can't load database

我在CodeIgniter中創建了一個控制整個管理員的控制器。 如果需要,它會根據URL加載另一個控制器。 它可以正常工作,但是由Admin控制器加載的控制器無法訪問數據庫。

這是我在Admin控制器中加載必要控制器的代碼。

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);
}

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

在Admin控制器或其模型之一中,我可以訪問數據庫,因此數據庫配置和自動加載功能也正好位於主控制器中。

你知道是問題嗎? 我希望有人能在這種情況下幫助我。

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

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

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

在構造函數中嘗試一下:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM