方法从两个不同的控制器调用Codeigniter 3


Method Calling in Codeigniter 3 from two different controllers

我正在使用CodeIgniter3

这是我的Admin控制器,我在其中向表people:中插入一条记录

class Admin extends CI_Controller {
    public function __construct() {
        parent::__construct();
    }
    public function addpeople() {
        insert in into people values('','pramod','emp0784');
    }
}

这是另一个控制器,我在其中执行与Admin控制器相同的操作,但它写入了两次相同的代码我想重用Employee控制器中的代码:

class Employee extends CI_Controller {
    public function __construct() {
        parent::__construct();
    }
    public function addpeople() {
       insert in into people values('','pramod','emp0784');
    }
}

我发现的另一种方法是在Employee中使用redirect(../admin/addpeole),但它会更改URL。

是否有其他方法可以在不更改URL的情况下在Employee控制器中重用Admin控制器中的相同代码

控制器不应该直接与数据库通信,您应该使用模型与数据库通信。控制器应该与模型通信,然后直接或通过视图发送输出。

你可以在application/models下创建一个模型。你必须给它一个与控制器不冲突的名称,所以大多数人都会添加后缀_model_m

例如:application/models/Employees_model.php

它应该扩展CI_ Model——代码应该是这样的。

class Employees_model extends CI_Model {
   public function add_employee($data) {
     // insert code goes here
   }
]

然后在控制器中加载模型&向其发送$数据以创建员工

class Employees extends CI_Controller {
   public function create () {
       $this->load->model('employees_model');
       $this->employees_model->add_employee($this->input->post());
   }
}

试试这个在核心中创建一个名为MY_Controller.php的文件,并从CI_Controller扩展。

<?php
if (!defined('BASEPATH'))
    exit('No direct script access allowed');
class Admin_Controller extends CI_Controller {
    public function __construct() {
        parent::__construct();          
    }       
    public function addpeople() {
         insert in into people values('','pramod','emp0784');
    } 
}
?>

在控制器中写入功能

从核心中创建的控制器扩展Employees

class Employee extends Admin_controller{
       public function __construct() {
           parent::__construct();
       }
    function abc() {
         $this->addpeople();// this will insert the values for you
    }
}