基于相同动态数据渲染多个视图的最佳实践

时间:2010-07-30 14:53:24

标签: zend-framework controller bootstrapping

我想对以下内容有一些意见:

  1. 我希望系统地呈现一些视图(我可以调用$ this-> render from 无论执行哪个控制器/操作,我的这些视图的布局。
  2. 然而,这些视图中使用的内容基于相同的动态生成数据,其背后的代码非常复杂,因此我无法将逻辑放在视图中以获得明显的优化/性能问题。
  3. 我可以在每个控制器中使用$ this-> _helper-> actionStack来调用另一个控制器,在该控制器中将准备视图的数据但是我想在不修改现有控制器的情况下进行操作
  4. 我很想在引导程序中添加一些东西,因为我想要的东西对我的应用程序很常见但是我只是不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

这就是View Helpers的用途 在View Helper中,您可以(通过模型或服务层)获取数据并准备输出。

<?php
class View_Helper_Foobar extends Zend_View_Helper_Abstract
{
    protected $_data;

    public function foobar()
    {
        if (null !== $this->_data) {
            $this->_data = some_expensive_data_getter();
        }

        return $this;
    }

    public function __toString()
    {
        return $this->view->partial('foobar.phtml', array('data' => $this->_data));
    }
}