【问题标题】:Using common functions (controllers) in code igniter在 codeigniter 中使用常用函数(控制器)
【发布时间】:2015-12-21 00:36:31
【问题描述】:

我正在使用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 中创建一个控制器,但我不知道如何从该控制器访问数据。

【问题讨论】:

    标签: php codeigniter oop model-view-controller


    【解决方案1】:

    您可以轻松地创建一个助手并从两个控制器中调用它,这样您就不会重复代码。

    在你的帮助文件中有一些东西:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多