我想知道Zend框架中两个帮助者Zend_Controller_Action_Helper_Abstract
和Zend_View_Helper_Abstract
之间的差异,我不明白。
答案 0 :(得分:17)
就像他们的名字一样:
ActionHelper用于控制器操作所需的可重用功能,而ViewHelper用于视图模板中的可重用功能。
来自http://zendframework.com/manual/en/zend.controller.actionhelpers.html
Action Helpers允许开发人员将运行时和/或按需功能注入任何扩展Zend_Controller_Action的Action Controller。 Action Helpers旨在最大限度地减少扩展抽象Action Controller的必要性,以便注入通用的Action Controller功能。
来自http://zendframework.com/manual/en/zend.view.helpers.html
在视图脚本中,通常需要反复执行某些复杂功能:例如,格式化日期,生成表单元素或显示操作链接。您可以使用帮助程序类为您执行这些行为。
主要思想是将经常使用的功能封装到对象中,而不是重新创建该功能或使用继承(这会使基类膨胀并违反单一责任原则)。 ZF区分ViewHelpers和ActionHelpers,因为它们有不同的责任。 ActionHelpers用于帮助处理请求,而ViewHelpers用于帮助渲染模型。
答案 1 :(得分:0)
如果你的视图帮助者需要知道你的模型(使用Zend_Db_Table),那么简单的经验法则是你做错了而不是使用动作助手。动作助手可以访问preDispatch和postDispatch之类的钩子。
查看帮助程序的好处,你可以在动作控制器中使用它,例如echo $this->view->myHelper();
我已经看到这个使用非常十分。