【问题标题】:Actions to be performed in controller or in model?要在控制器或模型中执行的操作?
【发布时间】:2012-12-14 11:25:06
【问题描述】:

我有一个项目表,每个项目都可以分配给定数量的图像,其中一些是特色图像。一次只能启用其中一项。

我在图像表中有这些字段: 精选(0 或 1) 启用(0 或 1)

遵循 MVC 架构,当我启用图像时,我不确定是否应该在控制器或模型中执行以下操作(我已经简化了示例,因为它有点复杂):

  1. 检查此图片是否有特色。
  2. 如果是特色图片,请禁用任何特色图片并启用此图片。

我可以从模型获取它的状态(有或没有)到控制器,让控制器命令模型禁用所有有特征的图像,然后告诉模型启用这个,或者让模型管理这个全部在内部。

我的问题出现了,因为据我所知并且我有时会读到,控制器被称为引擎,而模型只是按照控制器的命令执行。

但是我认为在这种情况下,模型可能会自力更生地将这些约束作为黑盒进行管理,而无需控制器知道它们。

你怎么看?

【问题讨论】:

  • 有人请吗?建议将不胜感激。

标签: php model-view-controller model controller


【解决方案1】:

我建议您在项目表中增加一个字段。并存储启用图像的 id(可以是特色图像或启用图像)。

此方法将解决您的两个问题

1.Check if this image is featured.
2.In case it is featured, disable any featured image and enable this one.

每次,只需存储已启用或精选的图像的 id。因此,您不必在图像表中进行太多更新。

【讨论】:

  • 感谢您的建议。你的方法比我的好得多。我把我的生活复杂化了。无论如何,我想弄清楚中心问题。
  • 很高兴它对您有所帮助。
  • 那么主要问题呢?它超出了示例。想象我的方式是唯一的方式。我应该将数据从模型检索到控制器,然后这个会说模型执行必要的操作吗?还是应该让模型在内部处理这一切并对控制器透明?
猜你喜欢
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
相关资源
最近更新 更多