Zend Framework — доступ к View Helper из View

У меня проблема с доступом к пользовательскому помощнику представления в представлении. Вызов помощника в layout.phtml работает отлично.

Версия ZF: 1.11.2

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

resources.view[] =

Начальная загрузка:

protected function _initViewSettings()
{
    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->doctype('XHTML1_STRICT');

    $view->setScriptPath(APPLICATION_PATH . '/views/scripts/');
    $view->addHelperPath(APPLICATION_PATH . '/layouts/helpers/', 'Layout_Helper_');
    $view->addHelperPath(APPLICATION_PATH . '/views/helpers/', 'View_Helper_');

}

Помощник: (application/views/helpers/Loader.php)

class View_Helper_Loader extends Zend_View_Helper_Abstract
{
    public function loader()
    {
         $loader_html = '
             <div class="loading">
             <div class="bullet"></div>
             <div class="bullet"></div>
             <div class="bullet"></div>
             <div class="bullet"></div>
         </div>';

        return $loader_html;
    }
}

Вид:

<?php
    echo $this->loader();
?>

Ошибка:

Plugin by name 'Loader' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/

Почему я не могу использовать помощника в своем представлении?


person uniqueHxC    schedule 01.09.2016    source источник
comment
Версия Zend Framework?   -  person Progrock    schedule 01.09.2016
comment
Что ты имеешь в виду? Инициализация представления уже есть в моем посте :)   -  person uniqueHxC    schedule 01.09.2016
comment
Можем ли мы увидеть Bootstrap::_initView()?   -  person Progrock    schedule 01.09.2016
comment
Ваш хелпер представления имеет имя файла Loader.php, должно быть LoaderTest.php   -  person Progrock    schedule 01.09.2016
comment
Я не вижу, где определяется «представление» ресурса ??   -  person Progrock    schedule 01.09.2016
comment
ах просто ошибка, извините. имена файлов и функций верны (обновил мой пост). просмотреть ресурс в моем application.ini -> resources.view[] =   -  person uniqueHxC    schedule 01.09.2016
comment
Пробовал в вашей версии ZF, не получается воссоздать это. Но похоже, что ваши вспомогательные пути где-то затираются. Или вид такой. Попробуйте var_dump($this->getHelperPaths()); из макета и представления, чтобы проверить, зарегистрированы ли пути, и трижды проверьте пути, имена классов и имена файлов! Вы манипулируете представлением в другом месте? Созданы ли новые экземпляры Zend_View?   -  person Progrock    schedule 01.09.2016
comment
Исправлено .. моя ошибка - спасибо за помощь!   -  person uniqueHxC    schedule 01.09.2016


Ответы (2)


Возможно, попробуйте явно добавить свое представление в визуализатор представления:

    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
        'ViewRenderer'
    );
    $viewRenderer->setView($view);

Я не могу воссоздать вашу проблему - она ​​работает в макете, но не в представлении.

Если я добавляю ресурс представления в application.ini, некоторые соединения происходят автоматически для меня в ZF 1.11.14, но если я создаю представление (новый Zend_View) в начальной загрузке в качестве ресурса, я должен явно передать его в визуализатор просмотра.

person Progrock    schedule 01.09.2016
comment
добавил эти строки в мой бутстрап, но ошибка все равно появляется:/ - person uniqueHxC; 01.09.2016

Починил это.

Проблема заключалась в следующих строках в моем действии:

    $this->_helper->layout()->disableLayout();
    $this->_helper->viewRenderer->setNoRender(true);

Я думал, что результат моего помощника все равно будет проанализирован в моем представлении. Плохая ошибка.

person uniqueHxC    schedule 01.09.2016