1
我有以下代码:如何优先考虑Zend Framework中的一个助手?
public function _setHelpers() {
Zend_Controller_Action_HelperBroker::addPrefix('My_Controller_Action_Helpers');
Zend_Controller_Action_HelperBroker::addPath (APPLICATION_PATH . '/controllers/helpers');
}
有了这个,我可以在我的/控制器/动作/助手/ Helper.php或/application/controllers/helpers/Helper.php添加辅助阉。这是好的,但我需要优先考虑/ application /中的一个,即:如果我有两个helpers加载/ in应用程序中的一个,而不是在My/Controller /中的一个...
EDITING
我通过代码更改为此解决这个问题:
public function _setHelpers() {
$prefix = 'My_Controller_Action_Helpers';
Zend_Controller_Action_HelperBroker::addPrefix ($prefix);
Zend_Controller_Action_HelperBroker::addPath (APPLICATION_PATH . '/controllers/helpers', 'My_Controller_Action_Helper');
return $this;
}
正如你可能会注意到,它几乎是相同的,与添加路径时,我还加了前缀的差异。感谢大家的帮助。
实际上不,我有这样两个代码: '类My_Controller_Action_Helpers_Noticia延伸My_Controller_Action_Helper_Abstract { \t保护的函数_direct(){ \t \t回声1; \t} } 类My_Controller_Action_Helper_Noticia延伸Busca_Controller_Action_Helpers_Noticia { \t保护的函数_direct(){ \t \t回声2; \t} }' 第一个是我/控制器/ ...,第二个在控制器/助手/ 它显示1中的视图... – Cito 2012-04-26 16:01:29
在这种情况下的原因是因为之一类没有正确命名,所以它不会被加载。根据您的应用前缀,我认为您必须更改'Controllers/Helpers'中的一个名为'Busca_Controller_Action_Helper_Noticia'并确保位置是'application/controllers/action/helpers/Noticia.php' – drew010 2012-04-26 17:13:20
事情是这样的它是好的,问题是其他的,但我已经知道了。感谢您的帮助,您给我提供了解决此问题的线索(因为我打印的前缀被添加到Zend_Controller_Action_HelperBroker :: getPluginLoader() - > getPaths()中,并且以这种方式我看到了需要添加addPath的前缀) 非常感谢! – Cito 2012-04-26 17:25:39