Zend Framework动作助手

时间:2011-02-28 15:31:51

标签: php zend-framework action helpers

我是Zend Framework动作助手中的新手,我试图使用它们但没有成功(我阅读了大量关于动作助手的帖子,包括http://devzone.zend.com/article/3350,并且在8小时内找不到解决方案) 。我使用Zend Tool来设置我的项目,帮助程序的名称是Action_Helper_Common。无论我做什么,我都会收到以下错误:“致命错误:类'Action_Helper_Common'未找到”。目前,我的设置如下:

  • zf version:1.11.3
  • 帮助者名称:A​​ction_Helper_Common
  • 助手位置: /application/controllers/helpers/Common.php

在Bootstrap.php中我有以下功能:

    protected function _initActionHelpers() {
    Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH . '/controllers/helpers', 'Action_Helper');
    Zend_Controller_Action_HelperBroker::addHelper(
        new Action_Helper_Common(null, $session)
    );
}

我也尝试了这个没有成功(它在_initActionHelpers之前在Bootstrap.php中定义):

protected function _initAutoloader() {
    $moduleLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '', 
        'basePath'  => APPLICATION_PATH . '/controllers/helpers'));
    return $moduleLoader;
}

那么我做错了什么?!?! PLZ的帮助,我绝望而且即将放弃:)。

3 个答案:

答案 0 :(得分:0)

你不需要做(所以删除它)

Zend_Controller_Action_HelperBroker::addHelper(
        new Action_Helper_Common(null, $session)
    ); ,

因为你已经做过

Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH . '/controllers/helpers', 'Action_Helper');

当你做

$myhelper = $this->getHelper('Common');

在您的控制器中,zf将查找目录/ controllers / helpers /以获取类名Action_Helper_Common并为您创建一个实例并将其返回。

答案 1 :(得分:0)

出于某种原因,以下行也不适用于我:

Zend_Controller_Action_HelperBroker::addHelper( new Action_Helper_Common() );

每次我明确地创建一个新的帮助对象时,我只是不断收到“未找到类”错误。

这对我有用:

Zend_Controller_Action_HelperBroker::getHelper('Common');

在这种情况下,会创建新的Action_Helper_Common对象,并在Helper Broker注册。

不确定它是否适合你,因为你有一个参数化的构造函数。

答案 2 :(得分:0)

由于您没有为Action_Helper _ *

设置自动加载器,因此出现错误

Resource autoloader

Helper代理使用插件加载程序根据您指定的路径和前缀加载帮助程序。这就是为什么:: getHelper()可以找到你的助手