2013-02-10 3 views
0

Je souhaite utiliser les plugins Controller dans Zend Framework. J'ai créé un dossier "plugins" dans le dossier de l'application et un fichier Test.php à l'intérieur. Il est contenu:zend framework: le contrôleur du plugin ne fonctionne pas

<?php 

class Plugin_Multilanguage extends Zend_Controller_Plugin_Abstract{ 
    public function preDispatch(){ 
     echo 'The plugin is working'; 
    } 
} 

dans le fichier Bootstrap, j'ai ajouté la fonction:

protected function _initAutoload(){ 


     $fc = Zend_Controller_Front::getInstance(); 
     $fc->registerPlugin(new Plugin_Multilanguage()); 


    } 

Et ça ne fonctionne pas. Je ne reçois même aucune sorte d'erreur ou d'inquiétude. Juste une page blanche. J'ai remarqué qu'il y avait beaucoup de sujets similaires, je les ai tous lus, mais je suis toujours confus avec ce simple problème. J'utilise Zend Framework 1.11. S'il vous plaît aider.

Je suis erreur suivant:

Fatal error: Class 'Plugin_Multilanguage' not found in C:\zendSites\moduleDeveloper\application\Bootstrap.php on line 13 

Mon contenu application.ini:

[production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
appnamespace = "Application" 
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" 
resources.view[] = 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules = "" 
resources.frontController.params.displayExceptions = 0 
resources.frontController.params.prefixDefaultModule = "1" 
resources.router.routes.defaultmodule.type = Zend_Controller_Router_Route_Module 
resources.router.routes.defaultmodule.abstract = On  
resources.router.routes.defaultmodule.defaults.module = "system" 
resources.router.routes.language.type = Zend_Controller_Router_Route 
resources.router.routes.language.route = ":language" 
resources.router.routes.language.reqs.language = "^(fr|en)$" 
resources.router.routes.language.defaults.language = "en" 
resources.router.routes.default.type = Zend_Controller_Router_Route_Chain 
resources.router.routes.default.chain = "language, defaultmodule" 
[staging : production] 
[testing : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
[development : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 

J'ai essayé d'ajouter une par une des ressources suivantes:

pluginPaths.Plugins = APPLICATION_PATH "/plugins" 
autoloaderNamespaces[] = "plugins" 
resources.frontController.plugins[] = "Plugin_Multilanguage" 
pluginPaths.Plugins = APPLICATION_PATH "/plugins" 
autoloaderNamespaces[] = "plugins" 

seulement le message d'erreur change:

Fatal error: Class 'Plugin_Multilanguage' not found in C:\zend\library\Zend\Application\Resource\Frontcontroller.php on line 117 

Qu'est-ce que je fais mal?

+4

page blanche signifie que vous avez display_errors est désactivé. Vérifiez le journal des erreurs du serveur et pensez à activer les erreurs en mode développement (ce que vous pouvez faire dans application.ini). –

+0

merci, je vais éditer mon post avec les erreurs que je reçois. – Andrei

Répondre

0

Les chances sont que votre chemin de plug-in n'est pas lisible par l'application:

APPLICATION_PATH "/plugins" 

Ces types de chemins ne sont pas lisibles par défaut pour le code de classe dans ZF.

Essayez de déplacer vos plugins à une bibliothèque d'applications:

/library 
    /Application 
    /Plugin 
     Multilanguage.php 

Mettez à jour votre code pour refléter ceci:

<?php 

class Application_Plugin_Multilanguage extends Zend_Controller_Plugin_Abstract 
{ 
    public function preDispatch(){ 
     echo 'The plugin is working'; 
    } 
} 

et mettre à jour le fichier de démarrage:

protected function _initAutoload() 
{ 
    $fc = Zend_Controller_Front::getInstance(); 
    $fc->registerPlugin(new Application_Plugin_Multilanguage()); 
} 
+0

Je l'ai fait comme vous l'avez suggéré. Le message d'erreur persiste: Erreur irrécupérable: Classe 'Application_Plugin_Multilanguage' introuvable dans C: \ zendSites \ moduleDeveloper \ application \ Bootstrap.php à la ligne 13 Peut-être que je devrais inclure du code dans Application.ini? – Andrei

+0

Oui, vous devrez ajouter la bibliothèque d'applications à l'autoloader dans le bootstrap. –

+0

mais comment cela peut-il être fait? – Andrei

Questions connexes