从 codeigniter 中的视图调用模型是不是不好?
Posted
技术标签:
【中文标题】从 codeigniter 中的视图调用模型是不是不好?【英文标题】:Is calling a model from a view in codeigniter bad?从 codeigniter 中的视图调用模型是否不好? 【发布时间】:2013-03-09 23:58:13 【问题描述】:好的,我一直在使用代码点火器创建一个小型测试站点,到目前为止,我已经完成了登录和注销。这些都遵循正确的 MVC,我认为控制器中的逻辑、模型中的实际工作和视图中的表示。但是,我在做一些事情时遇到了一个问题,比如在前端站点中包含新闻提要,不需要登录。我正在考虑只是在主页视图中调用负责显示新闻提要内容的模型。这是不好的做法吗?基本上,在登录时显示动态内容(如新闻提要甚至用户照片)的最佳方式是什么?
【问题讨论】:
它通常不受欢迎。您应该让您的控制器与您的模型对话,并将要打印的数据收集到一个变量中,该变量将传递给您的视图。 【参考方案1】:大错特错。
在理想情况下,您的所有函数、数据调用、操作、数据插入等都将在模型中。
控制器用于决定需要来自模型的哪些调用并来回传递数据。正是在这一点上,控制器可以收集视图所需的信息并将它们向前传递。
您的视图中应该有的唯一逻辑是 if/else 和 for each 循环。我在所有数据进入视图之前“准备”了所有数据,因此日期格式、空值处理等也已完成,因此我的视图只不过是带有少量名称的纯 html; ?> 类型变量。
【讨论】:
这不是控制器或视图的责任。请了解 MVC 中的每个部分实际上负责什么。 在 Codeigniter 的上下文中是这样处理的。你在下面提到了很多。【参考方案2】:在正确实施的受 MVC 启发的设计模式中,视图负责从模型层获取信息并创建响应(如果需要,由多个模板制作)。这意味着,视图从模型层请求数据是正确的做法。
你应该避免的是改变模型层状态的操作,因为那部分是控制器的责任。
另外需要注意的是,这仅适用于您拥有真实视图实例的情况。 CodeIgniter 所谓的“视图”只不过是一堆愚蠢的模板。模板不应从任何地方请求任何数据。
【讨论】:
以上是关于从 codeigniter 中的视图调用模型是不是不好?的主要内容,如果未能解决你的问题,请参考以下文章
在 codeigniter PATH 中调用控制器模型和视图