Zend_View: Access the view from a view helper

It's in the manual, but I thought I'd blog about my simple View Helper setup that ensures that I can get at the view with minimal effort.

Firstly we create a parent class:

<?php

abstract class My_View_Helper_Abstract
{
    protected $_view;
    
    public function setView($view)
    {
        $this->_view $view;
    }
}

This class contains the code required by Zend_View to collect an instance of the view and assign it to a protected variable. All my view helpers extend this class and so I can acess the view using $this->_view. For instance:

<?php

require_once 'My/View/Helper/Abstract.php';

class My_View_Helper_TreeUl extends My_View_Helper_Abstract
{
    /**
     * Render a nested array as a set of nested <ul>s.
     *
     * @param array|instanceof Iterator $list
     * @return string
     */
    function treeUl($list)
    {
        $output '';
        if (is_array($list) || $list instanceof Iterator) {
            if (count($list) > 0) {
                $output "<ul>\n";
                foreach ($list as $item) {
                    $output .= "\t<li>";
                    if(is_string($item)) {
                        $output .= $this->_view->escape($item);
                    } else {
                        $output .= $this->treeUl($item);
                    }
                    $output .= "</li>\n";
                }
                $output .= "</ul>\n";
            }
        }
        return $output;
    }
}

Simple, isn't it ?!

If you would like to comment on this article, please ping me on twitter.
If your response won't fit into 140 characters, write a blog post and then ping me!