如何将数据传递给从布局调用的自定义视图助手 - zend

时间:2013-10-25 13:45:11

标签: php zend-framework viewhelper

我有一个Controller,Layout,Custom视图助手。我从控制器$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');
    }

}

这是我的助手

2 个答案:

答案 0 :(得分:0)

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');
}

答案 1 :(得分:0)

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

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中,调用navbar助手传递参数:

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