在Zendframework 1中,我们使用init()
方法初始化控制器中的东西。我看到这是从zenframework 2中取出的。为什么?什么是在zf 2中实现相同功能的最佳方法。我正在升级我在zf1中开发的先前项目,我可以看到zf2中的事情与zf1相比发生了很大变化。
zf2中是否还有其他更改,我们在zf1中使用其他方法,例如preDispatch()
和postDispatch()
?
有人经历过这个吗?
答案 0 :(得分:12)
在zf2控制器中,ControllerLoader是ServiceManager的子类,它是一个子类。如果您需要初始化控制器,请使用工厂或__construct
。使用__construct
进行简单的初始化,如果控制器消耗其他需要注入的对象,则使用Factory。
preDispatch
和postDispatch
也支持新事件系统。要在zf2中获得相同的结果,请为disptach
和render
事件注册事件处理程序。有关mvc envents的完整列表,请参阅http://akrabat.com/zend-framework-2/a-list-of-zf2-events/
另外,请看一下设置控制器工厂ZF2 how to get entity Manager from outside of controller
的示例答案 1 :(得分:8)
我认为你可以将它放入控制器中,它会起作用。
public function onDispatch(MvcEvent $e)
答案 2 :(得分:0)
由于OP提及postDispatch
,值得注意的是__destruct
现在以类似的方式工作。但是,一个很大的区别是,无法阻止执行(例如通过exit;
)确定对象的拆除。