我在哪里放置视图助手所需的视图脚本(使用Zend_View和默认目录布局)?

时间:2010-10-08 01:54:19

标签: php zend-framework zend-view

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

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

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

4 个答案:

答案 0 :(得分: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;
    }

}

答案 1 :(得分: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如何处理部分视图渲染。

答案 2 :(得分: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

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

答案 3 :(得分:0)

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