【问题标题】:Is it bad to use a model directly from a view in codeigniter?直接从 codeigniter 中的视图使用模型是否不好?
【发布时间】:2011-02-28 07:38:22
【问题描述】:

我知道通常数据是通过控制器传递到视图的。但是,目前在我看来,我加载了我的模型 ($this->load->model('Db_model');),因此我可以在循环中使用它从传递的 ID 数组中检索用户个人资料图片路径控制器。在视图中加载 db 模型来完成此操作会使我的网站更容易受到攻击或形式不佳吗?对我来说,它似乎超出了 MVC 概念,但它的工作环境。谢谢

【问题讨论】:

  • 好问题!我认为从技术上讲答案是肯定的,但我也这样做非常方便,尤其是在循环访问大型复杂数据集时。

标签: php codeigniter views models


【解决方案1】:

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

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

【讨论】:

  • 我相信从技术上讲,如果该模型用于只读行为,那么您仍然可以将其视为 MVC。事实上,对我来说这听起来是个好主意,控制器永远不需要知道。
【解决方案2】:

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

如果您需要模型中的一些额外数据,为什么不在控制器中获取它并将其作为另一个参数传递给视图以便它可以轻松使用呢?它可能是相同数量的代码,并且您的代码会更干净。保持代码干净似乎没什么大不了的>

【讨论】:

    【解决方案3】:

    查看图书馆。您应该考虑创建一个库类助手来显示个人资料图片。然后,您可以让库调用模型。然后,在您看来,您只需这样做:

    <?php $this->profile_helper->display_picture(); ?>

    其中 profile_helper 是您的库类,display_picture() 是您用于显示用户个人资料的类函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      相关资源
      最近更新 更多