次のように CI_Controller を拡張しました。
// base extend
class MY_Controller extends CI_Controller {
public $CI = array();
public function __construct() {
parent::__construct();
$this->CI = & get_instance();
}
public function isUser(){
// for example
}
}
// admin extended
class MY_AdminController extends MY_Controller {
public $admin = array();
public function __construct() {
parent::__construct();
$this->CI->lang->load('admin');
$this->admin['lang'] = $this->CI->lang->line('admin');
$this->CI->load->vars($this->admin);
}
public function isAdmin(){
//for example
}
}
// extends for modules
class MY_AdminModuleController extends MY_AdminController {
public function __construct() {
parent::__construct();
$this->CI->load->view('_header');
}
public function isAllowedModule(){
// example
}
public function pseudoDestruct(){
$this->CI->load->view('_footer');
}
}
それでうまくいきます。しかし、post_controller
イベントをフックして my を追加しようとするMY_AdminModuleController->pseudoDestruct()
ので、config.php でフックを有効にし、次の行をフックに追加しました。
$hook['post_controller'] = array(
'class' => 'MY_AdminModuleController',
'function' => 'pseudoDestruct',
'filename' => 'MY_Controller.php',
'filepath' => 'core'
);
しかし、MY_AdminController のコンストラクターで lang-file をロードする際に問題が発生しました。null
フックから呼び出されると(通常使用すると)返さtrue
れ、フロントエンドで未定義のインデックスについて通知があります。いいえ、通知を無効にしたくありません。問題を解決したいのです。また、MY_AdminController のコンストラクターに構成の読み込みがあり、読み込みも良好です。