保持简单,假设我有一个具有用户特定菜单和用户特定标题的页面,然后页面本身是用户特定的。
我可以将所有内容加载到$data
中,然后在我的控制器中加载到这样的内容中:
$this->load->view('header', $data);
$this->load->view('sidebar', $data);
$this->load->view('page', $data);
但这并不是最好的方法。
有没有办法完全准备元素,并单独将其包含在主控制器中?我认为这样可以使代码更清晰。
也许我们可以在控制器中使用调用函数?如果是这样,我们如何限制这些特定功能可以作为page/function
?
答案 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存储库中的某些模板库,这样可以使您更轻松。