什么是存储"全球"的规范方式?布局和控制器中的信息?

时间:2012-01-21 03:21:16

标签: php model-view-controller zend-framework

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

所以我的问题是将这些信息从模型层中取出并将它们分发到控制器和布局中的最佳/规范方法。

我不想从某种基本控制器继承。我的想法是动作助手或插件的方向。我可以将所需的所有信息存储到布局中,并从需要这些信息的控制器中的视图/布局中读出。但话又说回来,我觉得这个解决方案并不优雅。

有任何想法或提示如何以干净的方式实现这一目标?

2 个答案:

答案 0 :(得分:1)

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

但是,如果您只在某些控制器操作/视图脚本中需要此数据,那么 我会选择一个带有preDispatch()钩子的动作助手来计算/保存你的数据。确保在bootstrap中注册/实例化此操作助手,以便在稍后触发preDispatch()信号时它存在。

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

大声思考......

答案 1 :(得分:0)

听起来使用Registry对于你想要的东西来说是一个很好的方法。

由于听起来您想要存储数据以进行访问,我认为将它存储在注册表中而不是使用帮助程序或插件更有意义。

如果您关注注册表中对象的命名,并且必须记住并访问应用程序中的各种键,那么可以使用Zend_Registry ::的抽象类来调用抽象类是有意义的。得到()。