从breadcrumb partial访问zend视图变量

时间:2011-10-03 19:13:06

标签: php zend-framework

如何从面包屑部分访问实际视图中定义的变量?

我尝试使用$ this-> myVar,但我什么也得不到。

我也试试这个并且它有效:

$view = Zend_Layout::getMvcInstance()->getView();
echo $view->myVar 

这是正确的还是有更好的方法?

2 个答案:

答案 0 :(得分:2)

Davi Harkness的回答是gr8,但是如果你仍然想要像$ view-> var一样使用它,你甚至不需要使用部分视图助手就可以了。

   $view = new Zend_View();
    $paths = $this->view->getScriptPaths();
    $view->addScriptPath($paths[0]);
    $view->name = "open source";
    $test = $view->render("test.phtml");
    echo $test;

test.phtml位于当前模块的/ views / scripts目录中并且包含

<?php echo $this->name?>

答案 1 :(得分:1)

Partial View Helper documentation明确指出它“用于在自己的变量范围内呈现指定的模板”。它通过克隆视图并清除其cloneView()方法中的所有现有变量来实现此目的:

public function cloneView()
{
    $view = clone $this->view;
    $view->clearVars();
    return $view;
}

不是将partial部分耦合到调用它的视图,而是应该让这些视图传递给数组中部分需要的值。

<?php echo $this->partial('partial.phtml', array(
    'from' => 'Team Framework',
    'subject' => 'view partials',
)); ?>

然后,部分视图脚本可以访问$this->from$this->subject

<?php // partial.phtml ?>
<ul>
    <li>From: <?php echo $this->escape($this->from) ?></li>
    <li>Subject: <?php echo $this->escape($this->subject) ?></li>
</ul>