Zend Controller Action Helper问题无法添加帮助程序

时间:2011-01-02 21:51:50

标签: zend-framework

尝试使用preDispatch方法使控制器助手在某些控制器中具有类似的功能。

错误:

Fatal error: Class 'Helper_Action_Test' not found in /var/www/zend.dev/application/Bootstrap.php on line 9`

应用程序布局

/Application
 /Helpers
   **/Actions** this is where i will save the classes
   /Views
 /modules
 /configs
 /layouts
 /Bootstrap.php

在Bootstrap中我添加了:

protected function _initActionHelpers(){
  Zend_Controller_Action_HelperBroker::addHelper(new Helper_Action_Test());
}

在帮助文件中我有:

class Helper_Action_Test extends Zend_Controller_Action_Helper_Abstract{

    public function  preDispatch() {
       echo 'Test';
    }

}

当我在bootstap中执行此操作时,它可能与include或我如何尝试使用addHelper()实例化新类;

    include(APPLICATION_PATH.'/helpers/action/Test.php');
    Zend_Controller_Action_HelperBroker::addHelper(new Test());

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

试试这个:

// Action Helpers
Zend_Controller_Action_HelperBroker::addPath(
    APPLICATION_PATH .'/controllers/helpers');
$hooks = Zend_Controller_Action_HelperBroker::getStaticHelper('Quote');
Zend_Controller_Action_HelperBroker::addHelper($hooks);

答案 1 :(得分:0)

我必须包含帮助文件引导文件。

或者我认为你想:require_once()

答案 2 :(得分:0)

通过在配置文件中添加以下行,您将能够实现您想要的效果

; Include path
includePaths.library                = APPLICATION_PATH "/../library"

; Autoloader Namespace
autoloaderNamespaces[]              = 'Helper_'

官方ZF文档中的更多信息Autoloader

答案 3 :(得分:0)

要解决您的问题,请确保引导程序上的_initAutoload()是第一种方法,并确保添加了前缀路径:

Zend_Controller_Action_HelperBroker::addPrefix('Helper_Action');

如果类不在include_path上,你可以提供类的路径:

Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH . '/helper/action/', 'Helper_Action');