【发布时间】:2012-07-04 13:57:43
【问题描述】:
我的页面上有一个菜单,每个页面都加载了该菜单。菜单数据通过模型从数据库中获取。我的第一个想法是从控制器调用模型,然后将其传递给每个页面上的视图。但这会导致“混乱”的代码,如果我忘记将菜单数据传递给视图,则会导致丑陋的错误(或者只是没有菜单项)。
所以我想出了通过助手获取菜单项的解决方案,然后只需从视图中调用助手函数。这更有意义,因为我只将代码放在一个地方(菜单视图)。
我的视图是这样设置的:控制器调用“页面”视图,然后加载页眉视图、菜单视图、适当的内容视图,最后是页脚视图。助手只能从一个地方调用,即菜单视图。
通常你甚至不能从助手加载模型,但我使用 $i = get_instance();然后通过该实例加载模型; $i->load->model().
我觉得这不是要走的路,但有更好的方法吗?
编辑:换一种说法:
我想要: 查看 -> 获取数据 -> 显示
不是: 控制器 -> 获取数据 -> 传递给视图 -> 显示
我只是不确定这样做是否“可以”,因为它完全无视 MVC 模型。
【问题讨论】:
-
我认为你应该考虑扩展你的控制器。这样你就可以在基础构造函数中加载菜单数据,它总是可用的,你不会忘记什么
标签: codeigniter dynamic view model helper