сценарий просмотра не распознает вспомогательные функции просмотра в zend framework

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

resources.view.helperPath.ZF_View_Helper_="ZF/View/Helper/"

также я зарегистрировал помощника в файле начальной загрузки

function _initViewHelpers(){
    $view = new Zend_View();    
    $view->addHelperPath('ZF/View/Helper','ZF_View_Helper');
    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
    $viewRenderer->setView($view);
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
}

но напрасно он все еще печатает это сообщение об ошибке:

Application error
Exception information:
Message: Plugin by name 'OutputHelper' was not found in the registry; used paths: 
Zend_View_Helper_: Zend/View/Helper/  

он не включает путь помощника пользовательского представления, как ожидалось;

путь помощника представления: library/ZF/View/Helper/OutputHelper.php


person user796767    schedule 20.06.2011    source источник
comment
Вы нарушаете схему именования Zend Framework, переименовывая папку Zend в ZF. Это может вызвать проблемы и в других местах приложения.   -  person datasage    schedule 20.06.2011


Ответы (1)


можешь так сделать:

сценарий просмотра

$view = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
var_dump($this === $view);
var_dump($view->getHelperPaths());
exit;

Я думаю, что ваш экземпляр представления заменяется в какой-то момент. Может быть, загрузчик модуля имеет ресурс просмотра?

Или это может быть другая очевидная ошибка. Так очевидно, что вы никогда не подумаете об этом

Кстати, удалите этот метод _initViewHelpers. Zend_Application_Resource_View отлично подходит для этого. И если вы используете этот метод, используйте его правильно, например:

$this->bootstrap('view');
$view = $this->getResource('view');
//whatever
person Xerkus    schedule 20.06.2011
comment
Верно. Похоже, экземпляр Zend_View в какой-то момент заменяется. - person David Weinraub; 20.06.2011
comment
спасибо, это было именно так, как вы сказали, я по ошибке создал новый экземпляр в действии контроллера, который я заменил сейчас на: Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view'); Но теперь новая проблема, когда я удаляю функцию _initViewHelper, как вы сказали, все настраиваемые помощники представления в основном макете снова не распознаются. - person user796767; 20.06.2011
comment
@user796767 user796767 Более удобный способ получить экземпляр представления — $view = Zend_Conroller_Action_HelperBroker::getStaticHelper('viewRenderer')->getView(); - person Xerkus; 22.06.2011