我正在使用 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
控制器中重复使用相同的代码,而无需更改网址吗?
答案 0 :(得分:1)
控制器不应直接与数据库通信,您应该使用Models与数据库通信,并且控制器应该与模型通信,然后直接或通过视图发送输出。
您可以在_m
下创建模型您必须为其指定一个与控制器不冲突的名称,以便大多数人添加后缀application/models/Employees_model.php
或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());
}
}
它应该扩展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
}
}