如何将数据传递到从布局调用的自定义视图帮助程序 - zend


How to pass data to custom view helper called from a layout - zend

我有一个控制器、布局、自定义视图助手。我正在从控制器传递数据$this->view->foo = 'foo';通常我在 layout.phtml 上获取它,在这里我在布局上调用自定义视图帮助程序$this->navbar();

如何在视图帮助程序中访问该foo

<?php
class Zend_View_Helper_Navbar extends Zend_View_Helper_Abstract
{
    public function setView( Zend_View_Interface $view )
    {
        $view = new Zend_View();
        $view->setScriptPath(APPLICATION_PATH . '/views/scripts/partials/');
        $this->_view = $view;
    }
    public function navbar()
    {
            return $this->_view->render('navbar.phtml');
    }
}

这是我的视图助手

更改帮助程序函数,使其接受参数,如下所示:

在Zend_View_Helper_Navbar

public function navbar($foo="")
{
        $this->_view->bar = $foo;
        return $this->_view->render('navbar.phtml');
}

然后,在 navbar.phtml 中:

<?php echo $this->bar; ?>

这样,传递给帮助程序函数的任何参数值都将显示在 navbar.phtml 中。之后,您可以像往常一样从控制器文件中传递参数。

在控制器文件中:

$this->view->foo = "custom parameter";

在视图脚本或 layout.phtml 中,调用传递参数的导航栏帮助程序:

<?php echo $this->navbar($this->foo);?>

Zend_View_Helper_Navbar扩展了包含$view的Zend_View_Helper_Abstract。您所要做的就是:

public function navbar()
{
    $this->view->setScriptPath(APPLICATION_PATH . '/views/scripts/partials/');
    $foo = (isset($this->view->foo)) ? $this->view->foo : '';
    // your code using $foo
    return $this->view->render('navbar.phtml');
}