我正在使用Code Igniter
作为我正在处理的项目的框架。我对MVC世界有点新意,但我一边学习。
在我的项目中,我有一个前端控制器和一个后端管理控制器。
在前端,我有一个注册表单,其中有大约5个下拉列表,由数据库调用填充。在管理方面,我会显示用户提交的记录,并在选择的下拉列表中预先选择该选项。
为了做到这一点,我还必须在管理控制器中填充下拉列表。
这是我的问题发挥作用的地方。在这样的场景中,我在前端控制器和管理控制器中基本上有3个相同的功能。
如何创建这两个控制器都可以访问的公共控制器或控制器?
以下是共享功能的示例:
public function fetchSites($org = null)
{
if (!$org) {
if (null !== $this->input->post('org')) {
$sites = $this->support_model->getSites($this->input->post('org'));
header('Content-Type: application/json');
echo json_encode($sites);
}
} else {
$sites = $this->support_model->getSites($org);
return $sites;
}
}
前端和后端共享相同的型号,只是不同的控制器。
我考虑在application/core
中创建一个控制器,但我无法弄清楚如何从该控制器访问数据。
答案 0 :(得分:0)
您可以轻松地创建帮助程序并从两个控制器中调用它,这样您就不会重复代码。
您的帮助文件中包含此内容:
function sharedFunctionality($org = null)
{
$CI = & get_instance();
$CI->load->model('path/to/support_model');
if (!$org){
$sites = $CI->support_model->getSites($CI->input->post('org'));
header('Content-Type: application/json');
echo json_encode($sites);
} else {
$sites = $CI->support_model->getSites($org);
return $sites;
}
}
在两个控制器中,您只需要调用辅助函数,然后调用函数:
$this->load->helper('nameOfHelper');
$sites = sharedFunctionality($this->input->post('field'));
创建帮助文件的更多信息: https://ellislab.com/codeigniter/user-guide/general/helpers.html