2012-04-21 62 views
1

我的插件目录坐在无法在Zend框架注册插件的application.ini

application 
    /plugins 
    Dbcount.php 
    ModuleLayout.php 

我无法注册frontController插件。这里是我的application.ini代码。

#Plugin path and namespace 
pluginPaths.Plugins = APPLICATION_PATH "/plugins" 
autoloaderNamespaces[] = "Plugin_" 

#register plugin 
resources.frontController.plugins[] = "Plugin_DbCount" 

它给我下面的错误。

Warning: include_once(Plugin/DbCount.php) [function.include-once]: failed to open stream: No such file or directory in /Users/azhararmar/htdocs/joofris/v1/library/Zend/Loader.php on line 146 

Warning: include_once() [function.include]: Failed opening 'Plugin/DbCount.php' for inclusion (include_path='/Users/azhararmar/htdocs/joofris/v1/application/../library:/Users/azhararmar/htdocs/joofris/v1/library:.:/Applications/MAMP/bin/php5.2/lib/php') in /Users/azhararmar/htdocs/joofris/v1/library/Zend/Loader.php on line 146 

Fatal error: Class 'Plugin_DbCount' not found in /Users/azhararmar/htdocs/joofris/v1/library/Zend/Application/Resource/Frontcontroller.php on line 117 

有什么不对?

回答

3

如果您使用的是默认appnamespace Application,然后存储在application/plugins/DbCount.php插件应该被命名为Application_Plugin_DbCount。使用完整的类名,当你注册:

resources.frontController.plugins[] = "Application_Plugin_DbCount"

+0

我使用自定义命名空间'Plugin_'感谢您的解决方案。但为什么它不能用我的代码 – 2012-04-21 17:12:47

+1

由于自动加载器命名空间在'/ library'中查找而不是在'/ application'下 – prodigitalson 2012-04-21 17:35:06

1

使用的名称空间一样,你Plugin类需要被库下或者需要其他映射它们在哪里。看起来像你有frontcontroller插件设置正确,但不正确的自动载入定义。

这里最简单的事情就是给你的插件命名为YourAppNamespace_Plugin_YourPluginName

1

它们是ZF中的两种类型的插件。你正在混合每个部分。

为了让你的代码工作做

1) put application dir in include_path 
2) change directory name plugins to 'Plugin'