3

我最近开始重写我几年前使用 CakePHP 所做的一个项目。这次我正在尝试做所有“正确”的事情,所以也许有人会给我一个关于执行以下操作的指针:

我在视图中使用 Model->find('all') 从表中显示一个简单的表。此表中有两个布尔字段,它们共同构成了我需要向用户显示的内容。所以:0x0 = 'A',1x0 = 'B',0x1 = 'C',1x1 = 'D'。我应该把这个逻辑放在哪里?我一直在考虑以下方法:

  1. 风景
  2. 视图助手
  3. 控制器
  4. 模型中的某些内容,以便 Model->find('all') 输出该值(这甚至可能吗?)

这个任务可能看起来微不足道,但我认为它可能会让我从一开始就让这个项目组织起来并且可以维护。

谢谢!

4

4 回答 4

5

好吧,这取决于组成决赛桌的逻辑类型(是演示还是业务?)。

假设您添加了新类型的 UI,例如命令行界面。你会如何在那里展示你的桌子?对于 HTML 和控制台演示文稿,传递给 View 的数据必须相同。所以负责准备数据的逻辑是业务逻辑,它应该放在模型中。负责显示数据的逻辑应该放在 View 中(如果它被多次使用,可能在 View Helper 中)。

并且永远不要将这种逻辑放在 Controller 中。

于 2010-02-17T08:07:54.187 回答
1

如果它是你要在所有地方使用的东西,我会把它放在模型中。您可以在模型上放置一个方法来返回该值,或者循环遍历您在afterFind回调中检索到的所有行并将其设置为适当的字段。

于 2010-02-17T08:05:41.007 回答
0

如果要确定渲染样式,我会将这种逻辑放在视图中。这样,设计师就拥有最大的访问权限并可以相应地设计样式。

另一方面,如果这两列只是为了方便数据建模而存在,则将其放入模型中。设计师甚至不应该意识到其他可能性!

于 2010-02-18T15:58:42.370 回答
-1

在控制器中!模型中的方法来自控制器。该视图仅用于输出(如 HTML UI 编程。)

于 2010-02-17T08:00:30.243 回答