Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在codeigniter中直接从视图使用模型是否不好?_Php_Codeigniter_Views_Models - Fatal编程技术网

Php 在codeigniter中直接从视图使用模型是否不好?

Php 在codeigniter中直接从视图使用模型是否不好?,php,codeigniter,views,models,Php,Codeigniter,Views,Models,我知道数据通常通过控制器传递到视图。然而,目前在我的视图中,我加载了我的模型($this->load->model('Db_model')),因此我可以在循环中使用它从控制器传递的ID数组中检索用户配置文件图片路径。在视图中加载db模型来实现这一点会使我的站点更容易受到攻击还是更糟糕?在我看来,这似乎超出了MVC的概念,但它的工作atm。谢谢如果你在MVC之外做了一些事情,这并不意味着它会在同一秒停止工作。MVC只是一种设计模式,它可以帮助您设计和维护站点。基本原则是模型应该只与控制器通信,视图

我知道数据通常通过控制器传递到视图。然而,目前在我的视图中,我加载了我的模型($this->load->model('Db_model')),因此我可以在循环中使用它从控制器传递的ID数组中检索用户配置文件图片路径。在视图中加载db模型来实现这一点会使我的站点更容易受到攻击还是更糟糕?在我看来,这似乎超出了MVC的概念,但它的工作atm。谢谢

如果你在MVC之外做了一些事情,这并不意味着它会在同一秒停止工作。MVC只是一种设计模式,它可以帮助您设计和维护站点。基本原则是模型应该只与控制器通信,视图也应该只与控制器通信,所以直接从视图调用模型的想法不是MVC的方式


如果您需要从模型中获取一些额外的数据,为什么不在控制器中获取这些数据,并将其作为另一个参数传递给视图,以便它可以轻松地使用这些数据呢?这将是相同数量的代码可能和你的代码将更干净。保持代码整洁似乎不是什么大不了的事,知道什么时候你记得所有东西都存储在哪里,但几个月后,当你忘记了这些东西时,如果你把应用程序弄得太乱,你可能会头疼。

我同意,但这一切都与规模有关。如果你正在设计一个微型应用程序,MVC其实并不重要,因为它很容易监督整个应用程序。然而,一旦应用程序开始增长,或者如果您正在构建更大的应用程序,MVC分离就变得更加重要


例如,如果在视图中使用模型,这意味着设计团队必须了解模型。它还可能妨碍以后将视图移植到另一个框架或交换模板。

查看库。您应该考虑创建用于显示配置文件图片的库类助手。然后可以让库调用模型。然后,在您看来,您只需执行以下操作:


其中,profile\u helper是您的库类,display\u picture()是显示用户配置文件的类函数。

问得好!我认为从技术上来说,答案必须是肯定的,但它非常方便,我也这么做,特别是在大型复杂数据集的循环中。我相信从技术上来说,如果模型用于只读行为,那么您可能仍然认为它是MVC。事实上,对我来说这听起来是个好主意,控制器永远不需要知道。