how to add a view helper directory zend framework using -'php,zend-framework,view-helpers'

how to add a view helper directory zend framework  using -'php,zend-framework,view-helpers'

I begin with ZF (1.9.7), and I want to use View Helpers from a library shared between all my projects. But I can't find how to add it directory to the helpers path. My herpers works fines when I put them in application's helpers path.

Here is the error, where I find the path to ZF helpers, and path to the applications ones.

object(ArrayObject)#71 (3) {
  object(Zend_Loader_PluginLoader_Exception)#70 (6) {
    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(0) ""
    string(89) "C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Loader\PluginLoader.php"

Best regards

asked Sep 8, 2015 by rajesh
0 votes

5 Answers

0 votes
It can be done very easily with the built in Zend_Application resource for the view. If you're using ini configs, add a line like this: resources.view.helperPath.My_View_Helper = "My/View/Helper" The end of the key is the class name prefix, and the value the path where they reside.
answered Sep 8, 2015 by rajesh
0 votes
There is a problem when using resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/../library/App/views/helpers" I can access no view helper in the layout even local helpers in the module. (Plugin by name 'LoggedInAs' was not found in the registry) but still working in views template files. I put this code "echo Zend_Debug::dump($this)" at the end of layout file and there is a part of output. ["_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/" } } but when using these code in the bootstrap file there is no problem. //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'); the output was like below: ["_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/" } }
answered Sep 8, 2015 by rajesh
0 votes
Helper paths are added through Zend_View_Abstract::addHelperPath(). You can call this method directly on an existing View instance. Helper paths can also be configured in various ways during bootstrap. Check out the ZF manual chapter on Zend_Application to see how to use Bootstrap classes and resources:
answered Sep 8, 2015 by rajesh
0 votes
EDIT: Check out view helper in zend framework for a more detailed take on this issue using rob allen's Loggedinas view helper. Not only can you do as specified by David Caunt, but you can also do it like this in your bootstrap. Note there is always more than one way to do anything in Zend Framework Check out If you have access to the view object, do the following. <?php $view->addHelperPath('My/View/Helper/', 'My_View_Helper'); ?> you may need to obtain the view object if you in a front controller plugin Also Check out this really great set of posts starting here:
answered Sep 8, 2015 by rajesh
0 votes
I have written short simple tutorial for registering the zend view helpers from a common directory, which can be accessed throughout the application. Please have a look.
answered Sep 8, 2015 by rajesh