Регистрация view_helper zf 1.10.3 - PullRequest
1 голос
/ 14 июня 2010

Я создаю свой помощник вида, он расположен в /library/My/View/helpers/SpecialPurpose.php, имя класса - My_View_Helper_SpecialPurpose, у него есть публичная функция specialPurpose (), он возвращает некоторый HTML

, я регистрирую этот путь вbootstrap.php

$ view = Zend_Layout :: getMvcInstance () -> getView ();$ view-> addBasePath ('/ my / view / helpers', "My_View_Helper");

когда я запускаю specialPurpose ();?> в любом представлении .phtml

это исключение

Message: Plugin by name 'SpecialPurpose' was not found in the registry; used paths: My_View_Helper_Helper_: /my/view/helpers\helpers/ Zend_View_Helper_: Zend/View/Helper/;D:/WWW/zends/application/modules/default/views\helpers/

PS Я прочитал много постов в stackoverflow, но ни одно решение не помогло. Если это возможно, мы можем узнать, как выполнить эту задачу с помощью bootstrap и application.ini zf версии 1.10.3

Ответы [ 6 ]

1 голос
/ 14 июня 2010

Переименовать:

My/View/helpers/SpecialPurpose.php

в:

My/View/Helper/SpecialPurpose.php

, то есть изменить имя папки helpers.При добавлении пути помощника вида добавьте его следующим образом:

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

0 голосов
/ 31 марта 2011

Вместо этого вызовите класс Zend_View_Helper_SpecialPurpose.Это сработает.

0 голосов
/ 20 февраля 2011

У меня была точно такая же проблема, потому что у меня было

"resources.view [] ="

Внутри моего application.iniМне нужно было избавиться от этого.Учебник Zend Quickstart имеет это в своей конфигурации, но это ошибка из того, что я могу сказать.Ошибка в вашем application.ini может каскадировать ошибку

0 голосов
/ 01 февраля 2011

Попробуйте это:

$view = Zend_Layout::getMvcInstance()->getView(); $view->addHelperPath(APPLICATION_PATH . 'My/View/Helper', 'My_View_Helper');

(Вы вызвали Zend_Layout :: startMvc (); в вашем Bootstrap?) Лучший "Zend способ" сделать это в Bootstrap:: _initView ()

Ваш помощник должен быть в APPLICATION_PATH/My/View/Helper и имя должно быть class My_View_Helper_SpecialPurpose extends Zend_View_Helper_Abstract

РЕДАКТИРОВАТЬ: путь должен быть APPLICATION_PATH . '/../library/My/View/Helper

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

Я попробовал etivarianty, когда добавляю

resources.view.helperPath.My_View_Helper=APPLICATION_PATH "My/Views/Helpers"

я вижу это сообщение

Message: Plugin by name 'SpecialPurpose' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/;D:/WWW/zends/application/modules/default/views\helpers/

Stack trace:

#0 D:\WebServer\ZendFramework\ZendFramework\library\Zend\View\Abstract.php(1170): Zend_Loader_PluginLoader->load('SpecialPurpose')
#1 D:\WebServer\ZendFramework\ZendFramework\library\Zend\View\Abstract.php(610): Zend_View_Abstract->_getPlugin('helper', 'specialPurpose')
#2 D:\WebServer\ZendFramework\ZendFramework\library\Zend\View\Abstract.php(336): Zend_View_Abstract->getHelper('specialPurpose')
#3 [internal function]: Zend_View_Abstract->__call('specialPurpose', Array)
#4 D:\WWW\zends\application\modules\default\views\scripts\index\index.phtml(5): Zend_View->specialPurpose()
#5 D:\WebServer\ZendFramework\ZendFramework\library\Zend\View.php(108): include('D:\WWW\zends\ap...')
#6 D:\WebServer\ZendFramework\ZendFramework\library\Zend\View\Abstract.php(880): Zend_View->_run('D:/WWW/zends/ap...')
#7 D:\WebServer\ZendFramework\ZendFramework\library\Zend\Controller\Action\Helper\ViewRenderer.php(897): Zend_View_Abstract->render('index/index.pht...')
#8 D:\WebServer\ZendFramework\ZendFramework\library\Zend\Controller\Action\Helper\ViewRenderer.php(918): Zend_Controller_Action_Helper_ViewRenderer->renderScript('index/index.pht...', NULL)
#9 D:\WebServer\ZendFramework\ZendFramework\library\Zend\Controller\Action\Helper\ViewRenderer.php(957): Zend_Controller_Action_Helper_ViewRenderer->render()
#10 D:\WebServer\ZendFramework\ZendFramework\library\Zend\Controller\Action\HelperBroker.php(277): Zend_Controller_Action_Helper_ViewRenderer->postDispatch()
#11 D:\WebServer\ZendFramework\ZendFramework\library\Zend\Controller\Action.php(523): Zend_Controller_Action_HelperBroker->notifyPostDispatch()
#12 D:\WebServer\ZendFramework\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php(289): Zend_Controller_Action->dispatch('indexAction')
#13 D:\WebServer\ZendFramework\ZendFramework\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#14 D:\WebServer\ZendFramework\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#15 D:\WebServer\ZendFramework\ZendFramework\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#16 D:\WWW\zends\public\index.php(26): Zend_Application->run()
#17 {main}  

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

$ view = Zend_Layout :: getMvcInstance () -> getView (); $ View-> addBasePath ( '/ My / View / Helper', "My_View_Helper");

У меня есть это сообщение

Message: Plugin by name 'SpecialPurpose' was not found in the registry; used paths: My_View_Helper_Helper_: My/View/Helper\helpers/ Zend_View_Helper_: Zend/View/Helper/;D:/WWW/zends/application/modules/default/views\helpers/

У меня нет свойства в этом $ view-> addHelperPath (); это свойство появляется когда я создаю $ view = new Zend_View ();

В чем может быть причина?

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

вы также можете зарегистрировать помощника вида в application.ini

resources.view.helperPath.My_View_Helper=APPLICATION_PATH "My/Views/Helpers"

, если ваш путь APPLICATION_PATH "Мои / Просмотры / Помощники"

...