0

我没有找到类似的主题,所以我问:

如何克服对我的所有 CodeIgniter 控制器功能重复相同模型查询的问题?对于我的网站,我必须在几乎相同的重复数据库查询上构建页眉和页脚,如下所示:

class Main extends CI_Controller
       {
       public function aboutus()
    {
    $this->load->model("read_db");
    $commondata["title"] = "Company - ".lang("aboutus");
    $commondata["mainmenu"] = $this->read_db->db_mainmenu();
    $commondata["mainprodcat"] = $this->read_db->db_allprodmaincat();
    $commondata["bestselling"] = $this->read_db->db_bestselling();
    $commondata["brochures"] = $this->read_db->db_allbrochures();
    $this->load->view("headerview", $commondata);

    $contentdata["aboutus"] = $this->read_db->db_aboutus();
    $this->load->view("view_aboutus", $contentdata);

    $this->load->view("footerview");
    }

public function contact()
    {
    $this->load->model("read_db");
    $commondata["title"] = "Company - ".lang("contact");
    $commondata["mainmenu"] = $this->read_db->db_mainmenu();
    $commondata["mainprodcat"] = $this->read_db->db_allprodmaincat();
    $commondata["bestselling"] = $this->read_db->db_bestselling();
    $commondata["brochures"] = $this->read_db->db_allbrochures();
    $this->load->view("headerview", $commondata);

            $contentdata["aboutus"] = $this->read_db->db_contact();
    $this->load->view("contactview", $contentdata);

    $this->load->view("footerview");
    }

       *further functions like this*
       }

是否有任何选项可以将相同的重复模型调用外包给另一个函数或文件?非常感谢您的任何建议。

4

1 回答 1

1

您可以在模型中创建一个组函数,然后从控制器中仅调用该函数。例如:

模型

function db_bundle() {
    $data = array();
    $data["mainmenu"] = $this->db_mainmenu();
    $data["mainprodcat"] = $this->db_allprodmaincat();
    $data["bestselling"] = $this->db_bestselling();
    $data["brochures"] = $this->db_allbrochures();
    return $data;
}

控制器

$commondata = $this->read_db->db_bundle();

请注意,您可以将呼叫按需要它们的页面分组,而不是捆绑,这样您就可以为联系人、关于我们等设置单独的组......或者您可以让您的捆绑函数接受允许您控制哪些参数函数应该也不应该从内部调用。

于 2013-06-02T00:25:33.497 回答