2010-12-04 4 views
0

Lorsque j'utilise un plugin de contrôleur frontal dans zend frameworker, il semble fonctionner avant l'autoloader. Comment devrais-je faire cela?Le plugin Frontcontroller ne se charge pas

dans mes App.ini

resources.frontController.plugins.routes = "Plugin_Routes" 

plugins/routes.php

class Plugin_Routes extends Zend_Controller_Plugin_Abstract { 
} 

Le message d'erreur ..

Erreur fatale: Introuvable de les Plugin_Routes 'classe dans/usr/share/php/Zend/Application/Ressource/Frontcontroller.php à la ligne 111

Aucun chemin d'inclusion?

Répondre

1

J'ai déjà eu:

resources.frontController.plugins[] = "Dagho_Controller_Plugin_Auth" 

et son fonctionnement pour moi très agréable

mise à jour: rien à la fantaisie seulement ces lignes ci-dessous et doctrine autoloader

protected function _initAutoload() { 
     $autoloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Default', 
        'basePath' => dirname(__FILE__), 
       )); 

     return $autoloader; 
    } 
+0

Même effet .. Je pense que c'est la même chose sauf que vous n'avez pas un tableau associatvive et un espace de noms supplémentaire.Avez-vous quelque chose dans le bootstrap pour charger l'autoloader au début? – Chris

+0

oh, pourriez-vous s'il vous plaît double vérifier la permission! – tawfekov

+0

Ok vous me avez dans la bonne direction: D semble que l'espace de noms est forcé sur les plugins ... même le manuel ne mentionne pas cela :) – Chris

1

Est-ce exact?

plugins/Routes.php 

Zend attend

Plugin/Routes.php 

Parce que le chargeur automatique utilisera le nom de la classe pour trouver les bons dossiers.

My_Class_Something 

Sera:

My/Class/Something.php 
+0

Mais ceci est le répertoire outil Zend fait ... même en tant que modules/et contrôleurs/sont minuscules et au pluriel, mais votre nom de classe que vous les faites avec capital et singulier Dans le message d'erreur il n'y a même pas de chemin d'inclusion, ce qui me fait penser que l'autochargeur n'existe pas encore avant d'enregistrer des plugins. – Chris

0

Ok le manuel semble erroné ou du moins pas clair: http://framework.zend.com/manual/1.11/en/zend.controller.plugins.html

Ce qui manque est l'espace de noms que vous avez besoin d'application sinon il ne fonctionnera pas dans 1,11

App.ini

resources.frontController.plugins.routes = "Application_Plugin_Routes" 

plug-in

class Application_Plugin_Routes extends Zend_Controller_Plugin_Abstract { } 

Fonctionne bien :)

1

Si rien ne fonctionne, essayez de jouer avec l'autochargeur.

ajouter ce code dans la classe d'amorçage

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()); 
}