CodeIgniter:如何在更大的页面中加载动态内容?

时间:2016-06-17 17:59:26

标签: php codeigniter dynamic

保持简单,假设我有一个具有用户特定菜单和用户特定标题的页面,然后页面本身是用户特定的。

我可以将所有内容加载到$data中,然后在我的控制器中加载到这样的内容中:

$this->load->view('header', $data);
$this->load->view('sidebar', $data);
$this->load->view('page', $data);

但这并不是最好的方法。

有没有办法完全准备元素,并单独将其包含在主控制器中?我认为这样可以使代码更清晰。

也许我们可以在控制器中使用调用函数?如果是这样,我们如何限制这些特定功能可以作为page/function

进行访问

1 个答案:

答案 0 :(得分:0)

我看到几个问题。让我试着回答。 您可以在视图文件加载中将第三个参数设置为false,因此将输出发送到浏览器,它将返回字符串。 Docs

其次,您可以使用下一个语法调用方法中现有类的其他方法:

public function index()
{
    $data['header'] = $this->page_header();
    $data['sidebar'] = $this->page_sidebar();
    $this->load->view('page', $data);
    //so in view of page view file you just output header and sidebar
}

protected function page_header()
{
    $data['data_of_header'] = $this->Some_header_data_model->get_all();
    $this->load->view('header', $data, TRUE);
}

private function page_sidebar()
{
    $data['data_of_sidebar'] = $this->Some_sidebar_data_model->get_all();
    $this->load->view('sidebar', $data, TRUE);
}

注意visibility keywords及其含义。

您可以搜索和检查github存储库中的某些模板库,这样可以使您更轻松。