1

您如何决定视图或控制器中是否有某些内容?

下面是一些具体的例子:

  • Zend_Captcha:控制器生成验证码并将其传递给视图还是视图生成它?
  • Zend_Alc:视图是否决定视图的一部分是否应该显示给用户,或者您是否有多个视图取决于可用的操作并且控制器选择正确的一个进行显示?
  • Zend_Session:视图是根据会话数据跟踪谁在查看它,还是由控制器解析并作为某种参数呈现给视图?

哪些组件(模型、视图或控制器)应该执行哪些操作的规则或指南是否写在我可以查看的地方?我在 Zend Framework 站点的文档中没有看到这一点。

4

2 回答 2

11

一般来说,这个问题可以适用于任何 MVC 框架。以下是我使用的指南:

  1. 瘦控制器。如果可能的话,让您的控制器只在模型上调用业务逻辑并将结果传递给您的视图。

  2. 视图除了视图逻辑什么都不做。做任何与视觉交互相关的事情,比如生成验证码、隐藏和显示基于 ACL 的链接。不要计算总数。不要在模型上调用逻辑。不要做业务逻辑。通常可以从视图中读取会话以隐藏和显示数据/链接。但是不要依赖它来保证安全性:让你的控制器也安全。

  3. 胖模特。将尽可能多的业务逻辑放入模型中。这样,您可以在控制器之间共享它们。如果您发现自己在一个控制器中迭代模型的元素,根据某些规则重置值,或者以其他方式执行复杂的业务逻辑,那么您应该尝试找到一种方法将该逻辑放入模型层。

希望这可以帮助。

于 2008-10-08T16:21:47.640 回答
2

对于 Capcha,您可以在视图中生成。对于 Acl,请使用视图。Zend_Session 可以被控制器和视图访问

于 2008-10-08T14:47:41.870 回答