如何在ZF视图中重用方法

时间:2009-09-29 09:43:00

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

在我的应用程序中,我在3列上有以下经典模板

*********************************************************
*                                                       *
*                                                       *
*********************************************************
*        *                               *              *
*        *                               *              *
* sidea  *         content               *    sideb     *
*        *                               *              *
*        *                               *              *
*        *                               *              *
*        *                               *              *
*        *                               *              *
*        *                               *              *
*********************************************************
*                                                       *
*                                                       *
*********************************************************

标题和sideb在网站的大部分内容相似(b面内容取决于用户的状态,因此需要动态呈现),以及sidea&每个控制器的内容都在变化。

由于我是ZF(1.9)的新手,我在实现这样的设置时遇到了一些困难,其中脚本视图重用了常用方法(对于sideb),并且动态内容注入有3个不同的位置。有人可以暗示任何教程/代码示例吗?

提前致谢。

修改

在更深入的zend_layout文档读者和其他一些链接(即this post)之后,我发现我应该将我的研究集中在zend框架的Composite View模式的方向上,特别是Zend_View_helper_partial。可能跟随两个链接可以给我一个手(和其他人搜索相同的东西)

Link 1 Link 2

4 个答案:

答案 0 :(得分:2)

看起来你需要一个布局。查看Zend_Layout文档页面,看看它是否达到了您想要的效果。

请查看此webinar,了解Zend_Layouts

的可能性

答案 1 :(得分:1)

View Helpers对于重用的函数非常有用。

http://framework.zend.com/manual/en/zend.view.helpers.html

答案 2 :(得分:1)

仅使用yout查看脚本来呈现页面内容。

利用Zend_Layout呈现页面的其余部分,并从布局中调用视图助手,以填充左右侧边栏。

如果你的'sidea'绑定到你当前的动作/控制器,你可以从动作视图脚本渲染它们,并从布局中调用'sideb'视图助手。

您当然可以将视图脚本的不同部分呈现给不同的响应段,并使用布局文件将响应段放在您希望的位置。

转发到多个控制器/操作是因为Alekc对应用程序的性能产生了巨大影响,在这种情况下是非常不必要的。

答案 3 :(得分:0)

我会回应你正在寻找的是布局。通过布局,您可以让控制器将视图渲染到不同的“内容”区域。

将此与将一个控制器“转发”到另一个控制器的能力相结合,请求的主控制器可以将视图(或多个视图)呈现到内容占位符中,然后转发到呈现(如果需要)侧边栏的控制器/页眉页脚。

对于需要这些元素的视图(比如文章控制器的'print'操作),您可以只禁用布局,并正常渲染视图(不转发给其他人)控制器)。