[英]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.