我一直在苦苦思索为什么这不管用。尝试注册一个控制器动作助手,例如在Zend文档,这里的几篇文章和各种博客中找到的。在application.ini和Bootstrap中都进行了尝试。
帮助器本身驻留在APPLICATION_PATH中。"/controllers/helpers“。该文件本身称为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"在我的控制器中调用下面的代码会抛出一个异常,消息是:"Action Helper by name Scoping found":
$this->_helper->Scoping();然后我在我的Bootstrap中尝试了以下内容(根据我看到的其他示例,我同时尝试了"Helper“和"Helper_”):
protected function _initActionHelpers()
{
Zend_Controller_Action_HelperBroker::addPath(
APPLICATION_PATH . '/controllers/helpers',
'Helper_'
);
Zend_Controller_Action_HelperBroker::addHelper(
new Helper_Scoping()
);
}这一次我得到了一个未捕获的异常,但想法相同:“致命错误:在第116行的/Users/ppjd/Sites/dbos/application/Bootstrap.php中找不到类'Helper_Scoping‘”
由于有如此多的工作示例,我想我一定遗漏了一些愚蠢的东西。求求你。
发布于 2012-11-14 01:29:39
如果有人碰巧遇到这种情况,下面是最终对我起作用的方法:这是一个名称空间问题。在Bootstrap中,我在addHelper之前做了以下修改:
$rl = $this->getResourceLoader();
$rl->addResourceTypes(array(
// ...other namespace settings...
'helper' => array(
'path' => 'controllers/helpers',
'namespace' => 'Helper',
),
));在那之后,一切都很好。希望这对其他人有帮助。
有时我觉得我花了比实际的应用程序开发更多的时间来完善框架。
发布于 2012-11-11 18:20:18
我不会尝试这样做,但我认为您的助手类(在您的应用程序结构中: APPLICATION_PATH。"/controllers/helpers)应该是'Zend_Controller_Action_Helper_Scoping‘而不是'Helper_Scoping’。
https://stackoverflow.com/questions/13325782
复制相似问题