0

我想就以下问题提供一些意见:

  1. 无论执行哪个控制器/动作,我都希望系统地呈现一些视图(我可以从我的布局中为这些视图调用 $this->render)。
  2. 然而,这些视图中使用的内容基于相同的动态生成的数据,并且其背后的代码非常复杂,因此我无法将逻辑放在视图中以解决明显的优化/性能问题。
  3. 我可以在每个控制器中使用 $this->_helper->actionStack 来调用另一个控制器,在该控制器中准备视图数据但是我想在不修改现有控制器的情况下这样做

我很想在引导程序中放一些东西,因为我想要的东西对我的应用程序来说很常见,但是我只是不知道该怎么做。

4

1 回答 1

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));
    }
}
于 2010-07-30T15:10:21.197 回答