Zend:我在哪里/如何注册自定义视图助手?

med*_*iev 10 zend-framework

在我的layout.phtml档案中,我有:

<?php echo $this->Test(); ?>
Run Code Online (Sandbox Code Playgroud)

我已经创建了一个Test视图助手 application/views/helpers/Test.php

<?php 

class My_View_Helper_Test extends Zend_View_Helper_Abstract {

    public function Test() {
        return 'test';
    }

}
Run Code Online (Sandbox Code Playgroud)

我的配置文件@ configs/application.ini:

resources.view[] = ''
resources.view.helperPath = APPLICATION_PATH "/views/helpers"
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Zend_Loader_PluginLoader_Exception:在注册表中找不到名称为"Test"的插件; 使用的路径:第406行的Zend_View_Helper_:Zend/View/Helper /:./ views/helpers/in /usr/share/php/Zend/Loader/PluginLoader.php

在类似的说明我也无法注册我的管理员视图助手..

resources.view.helperPath.Admin_View_Helper = APPLICATION_PATH "/modules/admin/views/helpers"
Run Code Online (Sandbox Code Playgroud)

我的modules/admin/views/helpers/AdminPanel.php:

<?php

class My_View_Helper_AdminPanel extends Zend_View_Helper_Abstract {

public function AdminPanel() { return 'test'; }

}
Run Code Online (Sandbox Code Playgroud)

除了使用addHelperPath在Bootstrap中做到这一点,我别无选择吗?如果是这样,有人可以证明我将如何使用我的路径?

gna*_*arf 13

使用application.ini可能是定义这些的最佳方式.我将所有视图助手放在我的库文件夹中:

includePaths.library = APPLICATION_PATH "/../library"
autoloadernamespaces.0 = "SNTrack_"

;  -- Note, these are the only resources.view lines I have...
resources.view.doctype = "XHTML1_STRICT"
resources.view.helperPath.SNTrack_View_Helper = APPLICATION_PATH "/../library/SNTrack/View/Helper"
Run Code Online (Sandbox Code Playgroud)

目录结构:

/
  application/
  library/
    SNTrack/
      View/
        Helper/
          Test.php
Run Code Online (Sandbox Code Playgroud)

视图:

 $this->test('test')
Run Code Online (Sandbox Code Playgroud)

SNTrack /查看/助手/ test.php的:

 class SNTrack_View_Helper_Test extends Zend_View_Helper_Abstract {
   public function test($args) { return $args; }
 }
Run Code Online (Sandbox Code Playgroud)