2016-08-02 11 views
0

私は管理者全体を制御するCodeIgniterでコントローラを作成しました。必要に応じて別のコントローラをロードします。URLに依存します。それは正しく動作しますが、Adminコントローラによってロードされたコントローラは、データベースに到達できません。CodeIgniterコントローラがデータベースを読み込めません

ここに必要なコントローラをロードする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コントローラまたはそのモデルのいずれかで、データベースにアクセスできます。そのため、データベースの設定と自動ロードもメインコントローラに適しています。

問題があるとご存じですか?この場合、誰かが私を助けてくれることを願っています。

+0

これは、自動ロードにあり、正常に動作しますが、唯一のメインコントローラは、$デシベル属性と他の人ではないがあります。 – kukko

+0

私はこの問題を発見しました。なぜならHMVC拡張はMY_ControllerではなくMX_Controllerを拡張するからです。申し訳ありませんが、HMVCの使い方については言及していませんでした。しかし、それは本当に役に立ちましたので、私は@ g9m29の答えを受け入れます。 – kukko

答えて

1

私はこれが最適だとは思わないので、あなたのアプリケーションのロジックデザインをさらに改善することができます。必要に応じて、この方法を試してみてください。

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

プライベート静的$ db変数をコントローラに追加し、__コンストラクトにDBインスタンスを作成してみてください。そして、あなたは、コンストラクタでこれを試してみてくださいself::db->get()->result()-> etc.

+0

メインコントローラによってロードされるすべてのコントローラにこれを追加しますか? – kukko

+0

それはうまくいきません、私はまだ$ dbプロパティのすべてのコントローラでnullを持っています。 – kukko

+0

コントローラーとは別に存在するが、CIのすべてのリソースを利用できるすべてのコントローラーはあります。これらのコントローラがCI内から呼び出され、CIの「共通の」コントローラであり、メインのCI_ControllerまたはMY_Controllerを拡張している場合は、メインコントローラとサブコントローラの全体にコードを提供してください。 – g9m29

0

のようなあなたのDBを使用し続けることができます。

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

私はすでにこれを試していますが、うまくいきません。 – kukko

関連する問題