什么是存储“;全局“;布局和控制器中的信息


What is the canonical way of storing "global" information in Layout and Controller?

我有一个基于Zend Framework的应用程序,它需要在多个控制器和一个全局布局中提供一组信息。

因此,我的问题是,从模型层中获取这些信息并将其分发到控制器和布局中的最佳/规范方法是什么。

我不想继承某种基本控制器。我的想法转向了Action Helpers或Plugins。我可以将我需要的所有信息存储到布局中,并从需要这些信息的控制器中的视图/布局中读取。但话说回来,我觉得这个解决方案不是很优雅。

有什么想法或暗示如何以干净的方式实现这一点吗?

对于需要注入布局的公共区域但在操作/视图脚本中无法访问的数据(侧边栏;身份验证链接,如登录、注销、注册、配置文件等),我可能会使用前端控制器插件。

但是,如果您只在一些控制器操作/视图脚本中需要这些数据,那么我会使用一个带有preDispatch()钩子的操作助手来计算/保存您的数据。请确保在引导程序中注册/实例化此操作帮助程序,以便在稍后触发preDispatch()信号时存在。

然后,在您的控制器中,繁重的工作已经完成:从动作助手中提取数据,并在动作中使用它,或者将它传递给视图脚本。

只是大声思考。。。

听起来使用注册表是一种很好的方法。

由于听起来你有想要存储以供访问的数据,我认为将其存储在注册表中比使用助手或插件更有意义。

如果您关心注册表中对象的命名,并且必须记住并访问整个应用程序中的各种键,那么可以调用抽象Zend_registry::get()用法的插件类。