2010-11-09 15 views
8

Ho ZF 1.11 in esecuzione senza problemi e ho seguito le istruzioni nella loro guida alle prestazioni per rimuovere le istruzioni require_once. Ho aggiunto il caricatore automatico al mio file indice come si suol dire (su una nota a margine, non vedo perché questo non può andare nel boostrap), ma ora i miei plugin non vengono trovati.Zend framework: percorsi plugin

Ad esempio, un modulo sta usando decoratore il 'DijitElement', che restituisce l'errore:

Zend_Loader_PluginLoader_Exception: Plugin by name 'DijitElement' was not found in the registry; used paths: Zend_Form_Decorator_: Zend/Form/Decorator/ in C:\wamp\www\cms\library\Zend\Loader\PluginLoader.php on line 412 

In questa forma costruttore ho aggiunto il seguente per cercare di risolvere il problema senza alcun risultato:

$this->addPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'DECORATOR'); 

Se cambio titolo il decoratore di usare 'Zend_Dojo_Form_Decorator_DijitElement' invece di 'DijitElement' ottengo:

Plugin by name 'Zend_Dojo_Form_Decorator_DijitElement' was not found in the registry; used paths: Zend_Dojo_Form_Decorator_: Zend/Dojo/Form/Decorator/ Zend_Form_Decorator_: Zend/Form/Decorator/ 

Nel mio bootstap sto usando la cache del plugin, prima di rimuovere require_once non avevo percorsi prefissati nel costruttore che funzionasse bene, ma dopo averlo rimosso ho provato con e senza e nessuno dei due lavori.

protected function _initPluginCache() { 
    $path = '/cache/pluginLoaderCache.php'; 
    if(file_exists($path)) include_once $path; 
    $loader = new Zend_Loader_PluginLoader(array(
     'Zend_View_Helper'=>LIBRARY_PATH.'/Zend/View/Helper/', 
     'Zend_Dojo_View_Helper'=>LIBRARY_PATH.'/Zend/Dojo/View/Helper', 
     'Zend_Dojo_Form_Decorator'=>'Zend/Dojo/Form/Decorator', 
     'Zend_Dojo_Form_Element'=>LIBRARY_PATH.'/Zend/Dojo/Form/Element' 
    )); 
    $loader = Zend_Loader_PluginLoader::setIncludeFileCache($path); 
} 

Come comunicare a Zend dove si trovano i file? Sto presumendo che questo è qualcosa a che fare con il mio caricatore automatico ma la guida dice semplicemente aggiungendo questo farà il trucco:

require_once 'Zend/Loader/Autoloader.php'; 
Zend_Loader_Autoloader::getInstance(); 

FYI, guida è qui http://framework.zend.com/manual/en/performance.classloading.html

+0

Perché stai impostando questi percorsi predefiniti in Zend_Loader_PluginLoader sul tuo bootstrap _initPluginChache()? –

+0

Questo era solo un esperimento, ho provato sia con che senza questi – Ashley

risposta

4

ho trovato la mia soluzione, il problema era niente relativo alla rimozione dei requisiti o del caricatore automatico ma in realtà un elemento decoratore. L'aggiunta di un array di decoratori che utilizza 'DijitElement' su un elemento non Dojo fornirà questo errore di plugin. Un errore stupido per un piccolo errore