I want to create two parent controllers: one for admin and one for user site. They have to extend a regular Controller class but each of them has to do different things.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
I wrote up an article showing how you do this.
http://philsturgeon.co.uk/news/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY
You need to create an __autoload() function in your config.php or directly include the base controller above the class definition.
回答2:
This is pretty easy. Do the following:
- Go to the following directory:
your_ci_app/application/core/
and create a php file calledMY_Controller.php
(this file will be where your top parent classes will reside) Open
MY_Controller.php
and add your multiple classes, like so:class Admin_Parent extends CI_Controller { public function __construct() { parent::__construct(); } public function test() { var_dump("from Admin_Parent"); } } class User_Parent extends CI_Controller { public function __construct() { parent::__construct(); } public function test(){ var_dump("from User_Parent"); } }
Create your children controllers under this directory
your_ci_app/application/controllers/
. I will call itadminchild.php
Open
adminchild.php
and create your controller code, make sure to extend the name of the parent class, like so:class Adminchild extends Admin_Parent { function __construct() { parent::__construct(); } function test() { parent::test(); } }