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
Perché stai impostando questi percorsi predefiniti in Zend_Loader_PluginLoader sul tuo bootstrap _initPluginChache()? –
Questo era solo un esperimento, ho provato sia con che senza questi – Ashley