2

アプリケーションをバージョン 1.11.2 から 1.12.1 に移行しようとしています。1.11.2 を含む Zend フォルダーを 1.12.1 を含む 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 でプラグインをオフにすると、サンプル モデルの他のファイルが見つかりません。

4

2 に答える 2

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

于 2013-01-16T08:38:53.183 に答える
1

From the error, php can't auto load the class Plugin_AccessCheck, I'm guessing you have a Plugin directory in your lib folder with a php file called AccessCheck.php

Try adding

autoloaderNamespaces[] = "Plugin_"

to your application.ini or manually do an include for that file

If this isn't the case, you have mis-named your class Plugin_AccessCheck. possible solutions are moving it to your common lib Common/Plugin/AccessCheck.php and renaming the class to Common_Plugin_AccessCheck

于 2013-01-16T02:08:53.967 に答える