你如何判断视图或控制器中是否有东西? (Zend框架)

时间:2008-10-08 14:44:20

标签: php model-view-controller zend-framework separation-of-concerns

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

以下是一些具体的例子:

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

什么组件(模型,视图或控制器)的规则或指南应该在我可以查看它的地方写什么?我没有在Zend Framework网站上的文档中看到这一点。

2 个答案:

答案 0 :(得分:11)

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

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

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

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

  4. 希望这会有所帮助。

答案 1 :(得分:2)

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