application / coreディレクトリに配置したMY_Controller.phpを作成することで、CI_Controllerクラスを正常に拡張しました。
core/My_Controller.phpは次のようになります。
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
}
}
次に、通常のコントローラーを作成すると、次のようになります。
class Home extends MY_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->view('home');
}
}
管理バックエンドを作成していますが、My_Controllerの代わりにコントローラーを拡張するための別の基本クラスが必要です。これは、管理コントローラーの一般的なメソッド(つまり、authentication_checkなど)を使用できるようにするためです。
私が理解できないのは、CI_Controllerを拡張する別のコントローラーを作成する方法です。
目標は、管理コントローラーがフロントエンドコントローラーとは異なる基本クラスを拡張することです。
管理ベースコントローラは次のようになります。
class MY_Admin_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
}
}
管理ページの通常のコントローラー:
class Admin_home extends MY_Admin_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->view('admin_home');
}
}
問題は、CI_Controllerクラスを拡張するには、コントローラーファイルにPREFIX_Controller.phpという名前を付けて、core/ディレクトリに配置する必要があることです。しかし、2つのコントローラークラスが必要であり、同じファイル名を持つことはできません。