尝试使用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());
有什么想法吗?
答案 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');