2010-11-09 36 views
8

ZF 1.11'in sorunsuz çalışması ve require_once ifadelerini kaldırmak için performans kılavuzundaki talimatları izledim. Autoloader'ı dizin dosyama ekledim (bir notta, neden bu boostrapta çıkamadığını anlamıyorum), ama şimdi eklentilerim bulunmuyor.Zend framework: Eklenti yolları

: denemek ve boşuna ile düzeltmek için, aşağıdaki I eklemiş Bu şekilde yapıcısında

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 

: Örneğin

bir şekilde hata verir 'DijitElement' dekoratör kullanıyorsa Bunun yerine sadece 'DijitElement' arasında 'Zend_Dojo_Form_Decorator_DijitElement' kullanmak dekoratör yeniden adlandırırsanız
$this->addPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'DECORATOR'); 

alıyorum:

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/ 

Benim boottap'ımda plugin önbellek kullanıyorum, require_once'ları kaldırmadan önce yapıcıda ön çalışma yollarım yoktu, ama çalıştıktan sonra çalıştım ve etmeden çalıştım ve çalışmadım.

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

Zend'e dosyaların nerede olduğunu nasıl söylerim? Bu benim Autolader ama bir ilgisi olduğunu varsayarsak ediyorum kılavuz sadece bu hile olacaktır ekleyerek diyor: problem şey oldu

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

, rehber benim çözüm buldu http://framework.zend.com/manual/en/performance.classloading.html

+0

Neden bu varsayılan yolları Zend_Loader_PluginLoader içinde bootstrap'inizde ayarlıyorsunuz? _initPluginChache()? –

+0

Bu sadece bir deneydi. – Ashley

cevap

4

burada Gereksinim veya autoloader kaldırılması ile ilgili ama aslında bir öğe dekoratörler. Dojo olmayan bir öğenin üzerinde 'DijitElement' kullanan bir dekoratör dizisi eklemek bu eklenti hatasını verecektir. Küçük bir hata için aptal bir hata