2016-11-22 8 views
0

application/coreの子コントローラからコアコントローラクラスをapplication/controllersにコールしようとしています。私はHomeコントローラhome.phpapplication/controllersに、Public_Controllerapplication/coreに拡張しています。私home.phpは、このようなものです:コアフォルダ内のCodeigniterがコアクラスを呼び出せません

<?php 
class Home extends Public_Controller 
{ 
    public $data = array(
     'page' => 'home', 
     'main_view' => 'home' 
    ); 

    public function index() 
    { 
     $this->load->view($this->layout, $this->data); 
    } 
} 

、私は上記のコードから

<?php 
class Public_Controller extends MY_Controller 
{ 
    // Layout untuk "Publik" 
    public $layout = 'layout'; 
} 

をpublic_controller.phpている、MY_Controllerもコアにあります。ここでは、コード

<?php 
class MY_Controller extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     // Autoload model. 
     $model = strtolower(get_class($this)); 
     if (file_exists(APPPATH . 'models/' . $model . '_model.php')) { 
      $this->load->model($model . '_model', $model); 
     } 
    } 
} 

はそうだが、要約すると、私はapplication/corepublic_controllerを拡張し、public_controllerはそのまたapplication/coremy_controllerを拡張application/controllersのコントローラhomeを持っています。 は、私はすでにこのコード

function __autoload($class) 
{ 
    if(strpos($class, 'CI_') !== 0) 
    { 
     @include_once(APPPATH . 'core/'. $class . EXT); 
    } 
} 

を追加することにより、設定/ config.phpのを修正私はこのhttps://philsturgeon.uk/codeigniter/2010/02/08/CodeIgniter-Base-Classes-Keeping-it-DRY/

から参照することによってコントローラに、ベースのコントローラを接続することができます。しかし、それはまだ動作していません。それを言って

私はこの問題を解決するために何かできますか? ありがとう

答えて

0

私はCodeigniterのバージョンに注意を払っていないようです。私はcodeigniter 3.1.0を使用し、私が使用するリファレンスは古いcodeigniterバージョン用です。 codeigniter 3の場合は、config/config.phpでこれを使用してください。

function __autoload($class) { 
    if (substr($class,0,3) !== 'CI_') { 
     if (file_exists($file = APPPATH . 'core/' . $class . '.php')) { 
      include $file; 
     } 
    } 
} 
関連する問題