【问题标题】:How to create two parent controllers in Codeigniter?如何在 Codeigniter 中创建两个父控制器?
【发布时间】:2010-10-12 09:05:37
【问题描述】:

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

【问题讨论】:

  • 更多信息怎么样?你想做类似 mydomain.com/admin/do_this 和 mydoman.com/user/do_that 的事情吗?
  • 或者它更像是您需要的条件扩展,例如 mydoman.com/iamhere/do_taht 控制器 Iamhere 执行条件扩展,因此如果它是管理员,它扩展 admin_controller,否则它扩展 user_controller ?

标签: php oop codeigniter


【解决方案1】:

我写了一篇文章来展示你是如何做到这一点的。

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

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

【讨论】:

【解决方案2】:

这很容易。执行以下操作:

  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();
        }
    
    }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2011-11-30
    • 2010-12-25
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多