一个视图的两个控制器,CodeIgniter?

Ben*_*Ben 2 php model-view-controller codeigniter

嘿伙计们,我是CodeIgniter的新手,需要一些帮助.我有一个格式化帖子内容区域的控制器.问题是我还需要创建一个包含动态组的侧边栏,以及一个包含最新帖子的右侧列.这并不难,我遇到的问题是我想要每个页面上的侧栏和右栏,我不想重新编码相同的位来获取每个控制器中的数据.

没有复制/粘贴,最好的方法是什么?

icc*_*bot 8

有很多方法可以做到这一点.

1)模板化:这是我对大多数情况的偏好(因为我的模板很复杂),我使用类似的东西将我的视图渲染成变量:

$content = $this->load->view('myview', $page_data, true);
Run Code Online (Sandbox Code Playgroud)

然后我将它加载到模板解析器中(你可以将它加载到另一个视图中),如下所示:

$this->load->library('parser');
$data = array(
        'page_title' => 'My Page Title',
        'page_content' => $content,
        'side_bar' => side_bar(), // function which generates your side bar
        'right_col' => right_col() // function which generates your right column
        );
$this->parser->parse('my_template', $data);
Run Code Online (Sandbox Code Playgroud)

然后你的模板就像:

<html>
<head>
<title>{page_title}</title>
</head>
<body>
    <div>{side_bar}</div>
    <div>{page_content}</div>
    <div>{right_col}</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

2)在视图中加载另一个视图:(假设您的菜单是视图而不是控制器)这样的事情:

<?php $this->load->view('menu_view'); ?> 
Run Code Online (Sandbox Code Playgroud)

3)PHP包括:你究竟如何在普通的PHP中做到这一点(只包括一个指向返回菜单的控制器的url),像这样:

<?php include("/common/sidebar"); ?>
Run Code Online (Sandbox Code Playgroud)

Codeigniter将呈现该页面,然后包含它.

4)AJAX ..我使用这个,如果"模板"内容中的内容不太重要,如横幅,建议相关项目列表等.