2010-02-25 74 views
19

我从ZF(1.9.7)开始,我想从我的所有项目之间共享的库中使用View Helpers。但我找不到如何将它添加到助手路径。当我将他们放入应用程序的帮助程序路径中时,我的herpers工作正常。如何添加视图帮助程序目录(zend框架)

这里是错误,我找到ZF助手的路径,以及路径到应用程序的路径。

object(ArrayObject)#71 (3) { 
    ["exception"]=> 
    object(Zend_Loader_PluginLoader_Exception)#70 (6) { 
    ["message:protected"]=> 
    string(151) "Plugin by name 'Voo' was not found in the registry; used paths: 
Zend_View_Helper_: Zend/View/Helper/;C:/ZendStd/www/applis/VOO4_PROJECTX/views\helpers/" 
    ["string:private"]=> 
    string(0) "" 
    ["code:protected"]=> 
    int(0) 
    ["file:protected"]=> 
    string(89) "C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Loader\PluginLoader.php" 
    ["line:protected"]=> 
    int(401) 

此致
塞德里克

回答

38

它可以很容易地实现为视图内置的Zend_Application资源。如果您使用INI CONFIGS,加上这样一行:

resources.view.helperPath.My_View_Helper = "My/View/Helper" 

关键的终点是类名的前缀,而价值在那里他们所在的路径。

+0

非常感谢您节省了我5小时 – 2014-06-09 12:53:53

11
+1

虽然所有这些选项都是正确的,并会工作,我觉得'大卫建议application.ini'的解决方案是“最佳实践” 。另外,在你的“_initView()”中你可以使用'$ this-> bootstrap('view'); $ view = $ this-> getResource('view');'使用application.ini视图而不是随机创建的视图... – gnarf 2010-02-25 22:22:41

+0

@gnarf除了'addHelperPath()'外,引导示例被复制1 :1来自ZF参考指南。它不应该被视为其他任何事物,而只是一个例子。我很清楚有不同的方法来做到这一点(例如使用Ini)。随意做不同的事情。 – Gordon 2010-02-25 22:41:54

1

编辑:退房view helper in zend framework有关使用抢阿伦的Loggedinas视图助手这个问题更详细的服用。

您不仅可以按照David Caunt的规定进行操作,还可以在引导程序中像这样操作。注意总是有做Zend框架的任何

退房http://devzone.zend.com/article/3412

如果你有访问视图对象,请执行下列操作的方法不止一种。

<?php  
$view->addHelperPath('My/View/Helper/', 'My_View_Helper'); 
?> 

你可能需要的,如果你获得视图对象的前端控制器插件

还检查了这真是太好了一套岗位这里开始的:

http://zend-framework-community.634137.n4.nabble.com/Getting-view-from-Bootstrap-ZF1-8-tp659447p659460.html

5

有一个使用时出现问题

resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/../library/App/views/helpers" 

我可以不访问视图h elper在模块中甚至是本地帮助者。(在注册表中找不到名为'LoggedInAs'的插件),但仍在视图模板文件中工作。

我把这个代码“echo Zend_Debug :: dump($ this)”放在布局文件的末尾,并且有一部分输出。

 ["_prefixToPaths:protected"] => array(3) { 
      ["Zend_View_Helper_"] => array(2) { 
      [0] => string(17) "Zend/View/Helper/" 
      [1] => string(16) "./views\helpers/" 
      } 
      ["ZendX_JQuery_View_Helper_"] => array(1) { 
      [0] => string(25) "ZendX/JQuery/View/Helper/" 
      } 
      ["Zend_View_Helper_Navigation_"] => array(1) { 
      [0] => string(28) "Zend/View/Helper/Navigation/" 
      } 
     } 

但是在引导文件中使用这些代码时没有问题。

//Initialize and/or retrieve a ViewRenderer object on demand via the helper broker 
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); 
    $viewRenderer->initView(); 
    //add the global helper directory path 
    $viewRenderer->view->addHelperPath(APPLICATION_PATH.'/../library/App/views/helpers', 'App_View_Helper'); 

产量为象下面这样:

  ["_prefixToPaths:protected"] => array(4) { 
       ["Zend_View_Helper_"] => array(3) { 
       [0] => string(17) "Zend/View/Helper/" 
       [1] => string(16) "./views\helpers/" 
       [2] => string(86) "D:/zf/application/modules/default/views\helpers/" 
       } 
       ["App_View_Helper_"] => array(1) { 
       [0] => string(85) "D:\zf\application/../library/App/views/helpers/" 
       } 
       ["ZendX_JQuery_View_Helper_"] => array(1) { 
       [0] => string(25) "ZendX/JQuery/View/Helper/" 
       } 
       ["Zend_View_Helper_Navigation_"] => array(1) { 
       [0] => string(28) "Zend/View/Helper/Navigation/" 
       } 
      } 
+0

您的解决方案就像一个魅力!我为整个应用程序和每个模块的助手使用助手!这就是我一直在寻找的! ;) – 2015-08-25 02:32:13