当我在zend框架中使用frontcontroller插件时,它似乎在自动加载器之前运行。我该怎么做?
在我的app.ini
中resources.frontController.plugins.routes = "Plugin_Routes"
插件/ routes.php文件
class Plugin_Routes extends Zend_Controller_Plugin_Abstract {
}
错误讯息..
致命错误:第111行的/usr/share/php/Zend/Application/Resource/Frontcontroller.php中找不到类'Plugin_Routes'
根本没有包含路径?
答案 0 :(得分:1)
是吗?
plugins/Routes.php
Zend期待
Plugin/Routes.php
因为自动加载器会使用类名来查找正确的文件夹。
My_Class_Something
将是:
My/Class/Something.php
答案 1 :(得分:1)
我曾经有过:
resources.frontController.plugins[] = "Dagho_Controller_Plugin_Auth"
它为我工作非常好
更新:没有什么可以看到下面的这些行和doctrine autoloader
protected function _initAutoload() {
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Default',
'basePath' => dirname(__FILE__),
));
return $autoloader;
}
答案 2 :(得分:1)
如果无效,请尝试使用自动装带器。
在bootstrap类中添加此代码
protected function _initBlablablaPlugin(){
$autoloader = Zend_Loader_Autoloader::getInstance();
//If your plugin is placed in the /library/My/Plugin/Blablabla, then register the "My_" namespace
$autoloader->registerNamespace('My_');
$frontController = Zend_Controller_Front::getInstance();
$frontController->registerPlugin(new My_Plugin_Authorize());
}
答案 3 :(得分:0)
好的,手册似乎是错误的或至少不清楚: http://framework.zend.com/manual/1.11/en/zend.controller.plugins.html
缺少的是您需要应用程序命名空间,否则它将无法在1.11中运行
app.ini
resources.frontController.plugins.routes = "Application_Plugin_Routes"
插件
class Application_Plugin_Routes extends Zend_Controller_Plugin_Abstract { }
可以正常工作:)