在CakePHP中放置某些逻辑的位置

时间:2010-02-17 07:58:12

标签: php cakephp separation-of-concerns

我最近开始重写几年前使用CakePHP做的项目。我这次正试图做一切'正确',所以也许有人会给我一个关于做以下事情的指针:

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

  1. 视图
  2. 视图助手
  3. 控制器
  4. 模型中的某些东西,以便Model-> find('all')输出这个值(甚至可能吗?)
  5. 这项任务看起来似乎微不足道,但我认为它可以让我从一开始就了解这个项目的组织和维护。

    谢谢!

4 个答案:

答案 0 :(得分:5)

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

想象一下,您添加了新类型的UI,例如命令行界面。你怎么在那里展示你的桌子?对于HTML和控制台演示文稿,传递给View的数据必须相同。因此,负责准备数据的逻辑是业务逻辑,应该放在模型中。负责显示数据的逻辑应放在View中(如果多次使用,可以在视图助手中)。

永远不要在Controller中放置这种逻辑。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果要确定渲染样式,我会在视图中放置这种逻辑。通过这种方式,设计师可以获得最大的访问权限,并可以相应地进行设计。

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

答案 3 :(得分:-1)

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