控制器内部的控制器...也许我错了

时间:2011-05-26 18:43:43

标签: php codeigniter

我有一个“标准”页面布局。

页眉,页脚,左侧的主要内容块和右侧的侧边栏。

现在这一切都很好,除了边栏在每个控制器中复制,但需要控制器才能运行。有时用户可能已登录,因此会有一些名称等工作。还有一个购物车,它将从MySQL数据库运行。

我不想在每个控制器中复制此代码。

我如何制作一个控制器来构建侧边栏,加载视图以及我可以“包含”的所有内容(就像我将包含视图一样)到页面中。

我可以预见sidebar类/对象的创建,我可以将其实例化并“添加到视图中”。

我该怎么做?

谢谢

3 个答案:

答案 0 :(得分:0)

听起来像Modular Extensions-HMVC可能是一个很好的解决方案。我链接的维基包括示例。

答案 1 :(得分:0)

当我在Codeigniter中遇到此问题时,我已经构建了一个加载post_controller_constructor的钩子,执行一些逻辑然后加载sidebar.php视图。它相当简单,不需要太多的努力。

唯一的问题是,如果你没有使用模板,那么它可能会破坏你调用视图的顺序。例如,如果您习惯:

public function index()
{
    $this->load->view("header.php");
    $this->load->view("my_awesome_page.php", $this->data);
    $this->load->view("footer.php");
}

然后你必须改变它,以便知道侧边栏将是最后一个调用并将页脚放在那里的东西。通常我会让Hook检查一个变量的CI对象,看看是否需要一个侧边栏,然后如果不是只是吐出footer.php。

我很自信hooks正是你所寻找的。

答案 2 :(得分:0)

我最终创建了一个库来完成我需要的东西。这很好用。可以像简单的控制器一样有效地创建库,并将其包含在任何地方。 :)