2010-11-09 3 views
8

У меня есть ZF 1.11 без проблем и следуйте инструкциям в руководстве по их эффективности, чтобы удалить инструкции require_once. Я добавил автозагрузчик в свой индексный файл, как говорится (на боковой ноте, я не понимаю, почему это невозможно в boostrap), но теперь мои плагины не найдены.Zend framework: Пули плагинов

Например, форма использует декоратор в «DijitElement», который возвращает ошибку:

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 

В этом виде конструктора я добавил следующее, чтобы попытаться исправить это без толка:

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

Если переименовать декоратор использовать 'Zend_Dojo_Form_Decorator_DijitElement' вместо 'DijitElement' я получаю:

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/ 

В моем bootstap я использую кэш плагинов, прежде чем я удалил require_once, у меня не было никаких префиксных путей в конструкторе, который работал нормально, но после удаления я пробовал с и без и не работал.

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, где находятся файлы? Я предполагаю это что-то делать с моим заряжанием, но руководство просто говорит, добавляя, что это будет делать трюк:

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

FYI, руководство находится здесь http://framework.zend.com/manual/en/performance.classloading.html

+0

Почему вы устанавливаете эти пути по умолчанию в Zend_Loader_PluginLoader на загрузочном носителе _initPluginChache()? –

+0

Это был просто эксперимент, я пробовал как с, так и без них – Ashley

ответ

4

Я нашел решение, проблема не было ничего связанные с удалением требуемого или автозагрузчика, но на самом деле декораторы элементов. Добавление массива декораторов, использующих «DijitElement» для элемента без додзе, даст эту ошибку плагина. Глупая ошибка для небольшой ошибки

Смежные вопросы