2010-10-12 102 views
1

我想创建两个父控制器:一个用于管理员,另一个用于用户站点。他们必须扩展一个常规的控制器类,但他们每个人都必须做不同的事情。如何在Codeigniter中创建两个父控制器?

+0

怎么样一点的更多信息?你想做一些像mydomain.com/admin/do_this和mydoman.com/user/do_that吗? – ITroubs 2010-10-12 09:09:29

+0

还是更多的条件扩展,你需要像在mydoman.com/iamhere/do_taht,其中控制器Iamhere做了一个条件扩展,所以如果它是一个管理员,它扩展了admin_controller,否则它扩展了user_controller? – ITroubs 2010-10-12 09:10:57

回答

4

我写了一篇文章,告诉你如何做到这一点。

http://philsturgeon.co.uk/news/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY

你需要在你的config.php创建一个__autoload()函数或直接包含在类定义上面的基本控制器。

+0

链接已死,这是工作的http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY – 2013-01-10 06:53:26

0

这很简单。执行以下操作:

  1. 转到以下目录:your_ci_app/application/core/并创建一个名为MY_Controller.php一个PHP文件(该文件将在您的顶级父类将驻留)
  2. 打开MY_Controller.php并添加多个类,像所以:

    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"); 
        } 
    
    } 
    
  3. 这个目录your_ci_app/application/controllers/下创建你的孩子控制器。我将其称之为adminchild.php

  4. 打开adminchild.php并创建您的控制器代码,确保延长父类的名称,例如:

    class Adminchild extends Admin_Parent { 
    
        function __construct() { 
         parent::__construct(); 
        } 
    
        function test() { 
         parent::test(); 
        } 
    
    } 
    
相关问题