我正在使用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
}
}