Как добавить каталог помощника вида (Zend Framework) - PullRequest
19 голосов
/ 25 февраля 2010

Я начинаю с ZF (1.9.7) и хочу использовать помощники просмотра из библиотеки, общей для всех моих проектов. Но я не могу найти, как добавить его каталог к ​​пути помощников. Мой герпер работает штрафами, когда я помещаю их в путь помощников приложения.

Вот ошибка, где я нахожу путь к помощникам ZF и путь к приложениям.

object(ArrayObject)#71 (3) {
  ["exception"]=>
  object(Zend_Loader_PluginLoader_Exception)#70 (6) {
    ["message:protected"]=>
    string(151) "Plugin by name 'Voo' was not found in the registry; used paths:
Zend_View_Helper_: Zend/View/Helper/;C:/ZendStd/www/applis/VOO4_PROJECTX/views\helpers/"
    ["string:private"]=>
    string(0) ""
    ["code:protected"]=>
    int(0)
    ["file:protected"]=>
    string(89) "C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Loader\PluginLoader.php"
    ["line:protected"]=>
    int(401)

С наилучшими пожеланиями
Седрик

Ответы [ 5 ]

38 голосов
/ 26 февраля 2010

Это можно сделать очень легко с помощью встроенного ресурса Zend_Application для представления. Если вы используете ini-конфиги, добавьте следующую строку:

resources.view.helperPath.My_View_Helper = "My/View/Helper"

Конец ключа - префикс имени класса и значение пути, в котором они находятся.

11 голосов
/ 25 февраля 2010

Вспомогательные пути добавляются через Zend_View_Abstract :: addHelperPath () . Вы можете вызвать этот метод непосредственно в существующем экземпляре View.

Во время начальной загрузки вспомогательные пути также можно настраивать различными способами. Ознакомьтесь с главой руководства ZF по Zend_Application, чтобы узнать, как использовать классы и ресурсы Bootstrap:

5 голосов
/ 16 октября 2012

Существует проблема при использовании

resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/../library/App/views/helpers"

Я не могу получить доступ к помощнику вида в макете, даже к локальным помощникам в модуле.(Плагин с именем 'LoggedInAs' не был найден в реестре), но все еще работает в файлах шаблонов представлений.

Я поместил этот код "echo Zend_Debug :: dump ($ this)" в конец файла макета ичасть вывода есть.

        ["_prefixToPaths:protected"] => array(3) {
          ["Zend_View_Helper_"] => array(2) {
            [0] => string(17) "Zend/View/Helper/"
            [1] => string(16) "./views\helpers/"
          }
          ["ZendX_JQuery_View_Helper_"] => array(1) {
            [0] => string(25) "ZendX/JQuery/View/Helper/"
          }
          ["Zend_View_Helper_Navigation_"] => array(1) {
            [0] => string(28) "Zend/View/Helper/Navigation/"
          }
        }

, но при использовании этого кода в файле начальной загрузки проблем нет.

    //Initialize and/or retrieve a ViewRenderer object on demand via the helper broker
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->initView();
    //add the global helper directory path
    $viewRenderer->view->addHelperPath(APPLICATION_PATH.'/../library/App/views/helpers', 'App_View_Helper');

вывод был такой, как показано ниже:

            ["_prefixToPaths:protected"] => array(4) {
              ["Zend_View_Helper_"] => array(3) {
                [0] => string(17) "Zend/View/Helper/"
                [1] => string(16) "./views\helpers/"
                [2] => string(86) "D:/zf/application/modules/default/views\helpers/"
              }
              ["App_View_Helper_"] => array(1) {
                [0] => string(85) "D:\zf\application/../library/App/views/helpers/"
              }
              ["ZendX_JQuery_View_Helper_"] => array(1) {
                [0] => string(25) "ZendX/JQuery/View/Helper/"
              }
              ["Zend_View_Helper_Navigation_"] => array(1) {
                [0] => string(28) "Zend/View/Helper/Navigation/"
              }
            }
1 голос
/ 04 июля 2011

РЕДАКТИРОВАТЬ: Проверьте помощник вида в Zend Framework для более подробного рассмотрения этой проблемы с помощью помощника вида Loggedinas Роб Аллен.

Вы можете не только сделать так, как указано Дэвидом Каунтом, но вы также можете сделать это так в своей начальной загрузке. Обратите внимание, что в Zend Framework всегда есть несколько способов сделать что-либо

Выезд http://devzone.zend.com/article/3412

Если у вас есть доступ к объекту просмотра, выполните следующие действия.

<?php    
$view->addHelperPath('My/View/Helper/', 'My_View_Helper'); 
?>

вам может понадобиться получить объект вида, если вы подключаете плагин для фронт-контроллера

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

http://zend -framework-community.634137.n4.nabble.com / Получение вида-с-Bootstrap-ZF1-8-tp659447p659460.html

0 голосов
/ 03 июня 2010

Я написал короткое простое учебное пособие для регистрации помощников Zend View из общего каталога, к которому можно обращаться через приложение. Пожалуйста, посмотрите.

http://www.mixedwaves.com/2010/03/accessing-and-using-zend-view-helpers-from-a-common-directory/

...