如何注册名称空间的自定义视图助手?
我有一个Zend Framework应用程序,它带有名称空间的自定义库(PHP 5.3)。如何注册名称空间的自定义视图助手?
我想注册一个视图助手,但我无法做到这一点,因为我在视图助手中使用的命名空间。
目前,我在我的引导,我有以下注册的助手路径:
protected function _initView()
{
$view = new Zend_View();
$view->addHelperPath(
APPLICATION_PATH . "/../library/App/View/Helper",
"App\View\Helper"
);
}
,我得到的错误:
Zend_Loader_PluginLoader_Exception: 插件的名字“IsActive”不 在注册表中找到;使用的路径: 应用程序\查看\ Helper_:
有谁有一个想法如何注册视图助手被命名空间?
在我的配置,我用:
resources.view.helperPath.Glewz\View\Helper\ = APPLICATION_PATH "/../library/Glewz/View/Helper"
一件事,我发现的是,我需要把在构造函数,因为视图助手类名称和公共功能都是一样的,它将使用函数作为构造函数。如果您使用PHP 5.3.3或更高版本,这不会成为问题 - “从PHP 5.3.3开始,与名称空间类名称的最后一个元素名称相同的方法将不再被视为构造函数。 “
尝试添加尾部斜杠到您的代码 - “App \ View \ Helper \” – robertlbolton 2011-03-29 18:05:29
Thx!这工作。 – tom 2011-03-30 17:51:54
在我引导我用这个:
$view->addHelperPath(APPLICATION_PATH . '/../library/App/View/Helper', 'App_View_Helper');
附加: 可以在Zend_View_Abstract来解析重载__call方法:
if (method_exists($helper, $name)) {
$methodName = $name;
} else {
$methodName = 'direct';
}
return call_user_func_array(array($helper, $methodName), $args);
您的意思是PHP 5.3的命名空间或ZF的命名空间 ? – user594791 2011-03-27 11:56:29
PHP 5.3命名空间 – tom 2011-03-27 12:17:46