繁体   English   中英

您如何确定视图或控制器中是否有内容? (Zend框架)

[英]How do you decide if something goes in the view or the controller? (Zend Framework)

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

以下是一些具体示例:

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

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

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

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

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

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

希望这可以帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM