我的应用程序中有一个相对复杂的部分,它是访问控制列表的编辑器。我需要在几个地方重用它,我希望它可以加载所有ajax-y等。
因为我需要经常使用它,所以我想把它变成Zend_View_Helper。这很简单 - 只需将$view->setHelperPath(APPLICATION_PATH . '/views/helpers', 'Cas_View_Helper');
放入视图的引导程序中,并且所有内容似乎都与加载视图助手有关。
但是,应该使用视图脚本输出帮助程序。是否有一个标准的位置,我应该把它?
答案 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)
在视图文件夹中,您可以创建一个文件夹助手。在这里你放置了视图助手。