Плагин Zend обнаружен в представлении, а не в макете

У меня есть плагин, который извлекает список кнопок. Когда я вызываю этот плагин из представления (echo $this->GetAdminButtons()), он работает нормально. Но мне нужно вызвать этот плагин из layout.phtml, и когда я это сделаю, приложение просто остановится (белый экран, нет вывода)

Когда я пытаюсь получить сообщение об исключении, я получаю эту ошибку:

Plugin by name 'GetAdminButtons' was not found in the registry;
used paths: 
    Zend_View_Helper_Navigation_: Zend/View/Helper/Navigation/ 
    Zend_View_Helper_:            Zend/View/Helper/:./views/helpers/

В приложении.ini

resources.view.helperPath.Admin_View_Helper = "Admin/View/Helper"

Что меня смущает, потому что он отлично работает в файлах .phtml.

Заранее спасибо,


person Peter    schedule 28.07.2012    source источник
comment
Где находится помощник? views/helpers/GetAdminButtons.php?   -  person Tim Fountain    schedule 28.07.2012
comment
Он находится в библиотеке/Admin/View/Helper/GetAdminButtons.php. Этот каталог указан как вспомогательный путь в application.ini.   -  person Peter    schedule 28.07.2012
comment
Этот путь не включен в список путей в ошибке. Не могли бы вы отредактировать свой вопрос, включив в него соответствующую часть вашего application.ini, где вы задали вспомогательные пути?   -  person Tim Fountain    schedule 28.07.2012
comment
У вас случайно нет строк в конфиге, которые начинаются с resources.layout? Если да, сработает ли это, если вы переместите их выше линий обзора?   -  person Tim Fountain    schedule 29.07.2012
comment
Линии макета уже были выше линий обзора. Я также пытался поместить файл во все известные папки представлений/помощников, но безуспешно. Любые идеи?   -  person Peter    schedule 29.07.2012


Ответы (1)


Продолжение обсуждения в комментариях. Попробуйте переместить строки resources.layout в вашей конфигурации, чтобы они были после строк resources.view (в моем предложении в комментарии все было не так).

Я думаю, ваша проблема в том, что макет инициализируется до представления, поэтому пути просмотра не существуют в макете.

person Tim Fountain    schedule 29.07.2012
comment
Я переключал линии в обе стороны, чтобы увидеть, есть ли какая-то разница, но это не так. - person Peter; 29.07.2012
comment
Есть ли у вас какие-либо методы _init в вашем классе начальной загрузки? - person Tim Fountain; 29.07.2012
comment
Да, у меня есть несколько, также защищенная функция _initViewHelpers() { $this-›bootstrap('layout'); $view = $this->getResource('layout')->getView(); } - person Peter; 29.07.2012
comment
Хорошо, кого-нибудь зовут _initLayout() или _initView()? - person Tim Fountain; 29.07.2012
comment
Это та же проблема, только в другом месте. Попробуйте изменить строку начальной загрузки в этом _initViewHelpers() на $this->bootstrap(array('view', 'layout')); Это заставит его сначала загрузить представление. - person Tim Fountain; 29.07.2012
comment
Это сделало трюк! ($this-›bootstrap(array('view', 'layout'));) вызывается плагин! Ты жжешь! большое спасибо! - person Peter; 29.07.2012