5

我的应用程序有一个相对复杂的部分,它是访问控制列表的编辑器。我需要在几个地方重用它,我希望它可以加载所有 ajax-y 等。

因为需要经常使用,所以想把它做成一个Zend_View_Helper。这很简单——只需放入$view->setHelperPath(APPLICATION_PATH . '/views/helpers', 'Cas_View_Helper');视图的引导程序,所有的设置似乎都与加载视图助手有关。

但是,帮助程序确实应该使用视图脚本输出。有一个标准的位置,我应该把它放在哪里?

4

4 回答 4

8

通常,当帮助程序需要视图脚本时,此脚本被放置在部分内部。该部分的位置可能会因您的目录结构而异,但标准是:

application[/modules/name]/views/scripts/partials/

您可以使用以下内容编写帮助程序:

class Cas_View_Helper_Foo extends Zend_View_Helper_Abstract 
{
    protected $partial = 'partials/foo.phtml';
    protected $view = null;

    // Render the partial here
    public function foo($params)
    {
        $this->view->partial($this->partial, $params);
    }

    // Specifying this method Zend_View will inject the view here
    public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
    }

}
于 2010-10-19T16:22:33.003 回答
1

您始终可以使用添加“共享”视图路径

$view->addScriptPath('/path/to/shared/view/scripts')

http://framework.zend.com/manual/en/zend.view.controllers.html#zend.view.controllers.script-paths

另外,看看 Zend_Paginator 如何处理局部视图渲染。

于 2010-10-19T04:37:44.233 回答
1

关于如何做到这一点,没有一个标准、建议或任何一成不变的东西。ZF 尽可能灵活,让您真正决定最适合您的应用程序。我将使用这个答案来比较当前的解决方案。

凯恩斯的回答是我觉得大多数人最终都会得出的解决方案。就我个人而言,我有自己的转折点:application[/modules/name]/views/scripts/helpers/{your helper}/blah.phtml它允许您没有冲突的部分名称,并且能够轻松地导航到您的视图助手文件。

尽管这对于模块化仍然很糟糕,但必须在至少两个地方安装视图助手。或者,另一种非常流行的解决方案是:

application[/modules/name]/views/helpers/{your helper}.php
application[/modules/name]/views/helpers/{your helper}/{view scripts}.phtml

这为您的视图助手提供了更好的模块化。

于 2010-10-22T19:47:34.060 回答
0

在视图文件夹中,您创建了一个文件夹助手。在这里放置视图助手。

于 2010-10-19T16:04:44.667 回答