你如何判断视图或控制器中是否有东西?
以下是一些具体的例子:
Zend_Captcha:控制器是否生成验证码并将其传递给视图或视图是否生成它?
Zend_Alc:视图是否决定是应该向用户显示视图的一部分,还是根据可用的操作确定多个视图,并且控制器选择正确的视图进行显示?
Zend_Session:视图是根据会话数据跟踪谁正在查看它,还是由控制器解析并作为某种参数呈现给视图?
什么组件(模型,视图或控制器)的规则或指南应该在我可以查看它的地方写什么?我没有在Zend Framework网站上的文档中看到这一点.
一般来说,这个问题可以适用于任何MVC框架.以下是我使用的指南:
瘦的控制器.如果可能,让控制器只需在模型上调用业务逻辑并将结果传递给视图.
视图只执行View Logic.做与视觉上与用户交互相关的任何事情,例如生成验证码,隐藏和显示基于ACL的链接.不要计算总数.不要在模型上调用逻辑.不做业务逻辑.通常可以从视图中读取会话以隐藏和显示数据/链接.但是不要依赖它来保证安全:使控制器也安全.
胖模特.尽可能多地将业务逻辑放入模型中.这样,您可以在控制器之间共享它们.如果您发现自己在控制器中迭代模型的元素,根据某些规则重置值,或者以其他方式执行复杂的业务逻辑,那么您应该尝试找到一种方法将该逻辑放入模型层.
希望这可以帮助.