2010-11-09 15 views
8

Tengo ZF 1.11 ejecutándose sin problemas y seguí las instrucciones en su guía de rendimiento para eliminar las instrucciones require_once. He agregado el autocargador a mi archivo de índice como dicen (en una nota lateral, no veo por qué esto no puede ir en la boostrap), pero ahora mis complementos no se están encontrando.Zend framework: rutas de complementos

Por ejemplo, una forma es el uso de decorador 'DijitElement', que devuelve el error:

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 

En esta forma constructor he añadido el siguiente para tratar y fijarlo con vano:

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

Si cambio el nombre de la decoradora de utilizar 'Zend_Dojo_Form_Decorator_DijitElement' en lugar de sólo 'DijitElement' me sale:

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/ 

En mi bootstap estoy usando el caché de plugin, antes de eliminar el require_once no tenía rutas de prefijo en el constructor que funcionó bien, pero después de eliminar lo he intentado con y sin y tampoco funcionó.

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

¿Cómo le digo a Zend dónde están los archivos? Estoy suponiendo que esto es algo que ver con mi cargador automático, pero la guía dice simplemente agregando esto va a hacer el truco:

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

FYI, guía está aquí http://framework.zend.com/manual/en/performance.classloading.html

+0

¿Por qué estás configurando estas rutas predeterminadas en Zend_Loader_PluginLoader en tu bootstrap _initPluginChache()? –

+0

Eso fue solo un experimento, lo he intentado con y sin estos – Ashley

Respuesta

4

encontré mi solución, el problema no era nada relacionado con la eliminación de los requisitos o el autocargador, pero en realidad es un elemento decorador. Agregar un conjunto de decoradores que usa 'DijitElement' en un elemento no dojo dará este error de complemento. Un error estúpido por un pequeño error