Zend Action Helpers无法通过Action HelperBroker加载

时间:2011-06-03 04:20:49

标签: php zend-framework

在我的模块引导程序中:

<?php

class Api_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initAllowedMethods()
    {
        $front = Zend_Controller_Front::getInstance();
        $front->setParam('api_allowedMethods', array('POST'));
    }

    protected function _initActionHelperBrokers()
    {
        Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH . '/modules/api/controllers/helpers', 'Api_Controller_Action_Helper_');

        Zend_Controller_Action_HelperBroker::addHelper(new Api_Controller_Action_Helper_Model());
    }
}

Api_Controller_Action_Helper_Model

有一个/var/www/project/application/modules/api/controller/helpers/Model.php

但我明白了:

PHP Fatal error:  Class 'Api_Controller_Action_Helper_Model' not found in /var/www/accounts.amh.localhost/application/modules/api/Bootstrap.php on line 15

据我所知,API和http://akrabat.com/zend-framework/using-action-helpers-in-zend-framework/这应该可行。

我很确定这不是像以前那样的引导问题,因为我在尝试添加帮助程序之前专门添加了路径/前缀。

我还有什么可能错过的?

1 个答案:

答案 0 :(得分:2)

这里的问题是模块自动加载器不知道控制器动作助手资源。

在模块引导程序中尝试这样的事情

protected function _initResourceLoader()
{
    $resourceLoader = $this->getResourceLoader();

    $resourceLoader->addResourceType('actionhelper',
            'controllers/helpers', 'Controller_Action_Helper');
}

所有这一切,因为你的助手有一个空的构造函数,你可以省略addHelper()行,让代理在控制器中请求时自动创建它,例如

$helper = $this->getHelper('Model');