我尝试将应用程序从1.11.2迁移到1.12.1。我只是用包含1.12.1的Zend文件夹替换了包含1.11.2的Zend文件夹。在1.11.2中工作的应用程序在1.12.1中不起作用,它无法加载类:
Fatal error: Class 'Plugin_AccessCheck' not found in
C:\git_reps\mailable\application\Bootstrap.php on line 32
我在application / plugin文件夹中有插件文件,它在1.11.2中工作。你能否告诉我为什么我的应用程序在1.12.1中不起作用以及如何使应用程序工作在新版本? 如果我关闭插件,它就找不到其他类,例如我的模型。
这是来自application.ini的碎片网:
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view.doctype = "HTML5"
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
autoloaderNamespaces[] = "Common_"
autoloaderNamespaces[] = "Shanty_"
resources.view.helperPath.Common_View_Helper_ = "Common/View/Helper/"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = ""
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
此处注册插入代码:
/**
* Init plugins
*/
protected function _initPlugins()
{
$fc = Zend_Controller_Front::getInstance();
$applicationPart = getenv('APPLICATION_ENV_PART');
switch($applicationPart) {
case 'subscribe':
$fc->registerPlugin(new Plugin_SubscribeAccessCheck());
return;
break;
default:
$fc->registerPlugin(new Plugin_AccessCheck());
break;
}
}
当我在BootStrap中关闭插件时,它无法找到其他文件,例如模型。
答案 0 :(得分:2)
如果@Marc的建议不起作用,请尝试在application.ini中添加以下行:
resources.frontController.plugins.accessCheck = Plugin_AccessCheck
在Bootstrap.php中:
/**
* @return Zend_Application_Module_Autoloader
*/
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array('namespace' => '', 'basePath' => APPLICATION_PATH));
$autoloader->addResourceType('plugin', 'plugins', 'Plugin');
return $autoloader;
}
如果文件位于以下路径中,则此方法有效:
/app/application/plugins/AccessCheck.php
答案 1 :(得分:1)
从错误中,php无法自动加载类Plugin_AccessCheck,我猜你的lib文件夹中有一个名为AccessCheck.php的php文件的插件目录
尝试添加
autoloaderNamespaces[] = "Plugin_"
到您的application.ini或手动为该文件执行包含
如果不是这种情况,那么您的类名为Plugin_AccessCheck。可能的解决方案是将它移动到您的公共库Common / Plugin / AccessCheck.php并将该类重命名为Common_Plugin_AccessCheck