找不到Zend Controller Action Helper

时间:2012-11-10 20:25:57

标签: zend-framework

一直在拉我的头发为什么这不起作用。尝试注册控制器动作助手,例如:发现在Zend docs,这里有几篇帖子和各种博客。尝试在application.ini和Bootstrap中进行。

帮助程序本身位于APPLICATION_PATH中。 " /控制器/护理人员&#34 ;.该文件本身称为Scoping.php。在application.ini中,appnamespace =""。

<?php
class Helper_Scoping extends Zend_Controller_Action_Helper_Abstract
{
    public function direct()
    {
       // code is here
    }
 }

首先我尝试了application.ini:

resources.frontController.actionhelperpaths.Helper = APPLICATION_PATH "/controllers/helpers"
resources.frontController.plugins.Scoping = "Helper_Scoping"

在我的控制器中调用以下内容会抛出一个异常,并显示以下消息:&#34; Action Helper by name未找到作用域&#34;:

$this->_helper->Scoping();

然后我在我的Bootstrap中尝试了以下内容(我尝试了两个&#34; Helper&#34;和&#34; Helper _&#34;基于我看到的其他示例):

protected function _initActionHelpers()
{
    Zend_Controller_Action_HelperBroker::addPath(
            APPLICATION_PATH . '/controllers/helpers', 
            'Helper_'
    );
    Zend_Controller_Action_HelperBroker::addHelper(
        new Helper_Scoping()
    );
}

这次我得到一个未被捕获的例外,但同样的想法:&#34;致命错误:Class&#39; Helper_Scoping&#39;在第116行和第34行的/Users/ppjd/Sites/dbos/application/Bootstrap.php中找不到;

由于那里有很多工作实例,我认为我必须错过一些愚蠢的东西。请SOS。

2 个答案:

答案 0 :(得分:0)

我不尝试这个,但我认为你的助手类(在你的应用程序结构中:APPLICATION_PATH。“/ controllers / helpers”)应该是'Zend_Controller_Action_Helper_Scoping'而不是'Helper_Scoping'。

答案 1 :(得分:0)

如果有人发生这种事,那么最终对我有用的是:这是命名空间问题。在Bootstrap中,我在addHelper之前做了这个修改:

    $rl = $this->getResourceLoader();
    $rl->addResourceTypes(array(
        // ...other namespace settings...
        'helper' => array(
                'path'      => 'controllers/helpers',
                'namespace' => 'Helper',
        ),
    ));

之后一切正常。希望这有助于其他人。

[有时候我觉得我花了更多的时间来试验这个框架而不是实际的应用程序开发。]