我有一个“标准”页面布局。
页眉,页脚,左侧的主要内容块和右侧的侧边栏。
现在这一切都很好,除了边栏在每个控制器中复制,但需要控制器才能运行。有时用户可能已登录,因此会有一些名称等工作。还有一个购物车,它将从MySQL数据库运行。
我不想在每个控制器中复制此代码。
我如何制作一个控制器来构建侧边栏,加载视图以及我可以“包含”的所有内容(就像我将包含视图一样)到页面中。
我可以预见sidebar
类/对象的创建,我可以将其实例化并“添加到视图中”。
我该怎么做?
谢谢
答案 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正是你所寻找的。 p>
答案 2 :(得分:0)
我最终创建了一个库来完成我需要的东西。这很好用。可以像简单的控制器一样有效地创建库,并将其包含在任何地方。 :)