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

时间:2015-11-25 14:38:53

标签: php

我正在使用 CodeIgniter 3

这是我的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');
    }
}

我找到的另一种方法是redirect(../admin/addpeole)中的Employee,但它会更改网址。

还有其他方法可以在Admin控制器的Employee控制器中重复使用相同的代码,而无需更改网址吗?

2 个答案:

答案 0 :(得分:1)

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

您可以在_m下创建模型您必须为其指定一个与控制器不冲突的名称,以便大多数人添加后缀application/models/Employees_model.phpclass 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()); } }

它应该扩展CI_Model代码就是这样。

{{1}}

然后在您的控制器中加载模型&发送$ data以创建员工

{{1}}

答案 1 :(得分:0)

试试这个 在核心中创建一个名为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
    }
}