是否可以在Zend Framework中获取所有设置的视图变量?

时间:2012-09-24 18:50:02

标签: php zend-framework

如果我有一个视图并希望查看特定视图的所有设置变量,我该怎么做?

4 个答案:

答案 0 :(得分:9)

分配给Zend_View对象的变量只是成为视图对象的公共属性。

以下是在特定视图对象中设置所有变量的几种方法。

在视图脚本中:

$viewVars = array();

foreach($this as $name => $value) {
    if (substr($name, 0, 1) == '_') continue; // protected or private

    $viewVars[$name] = $value;
}

// $viewVars now contains all view script variables

来自控制器中的Zend_View对象:

$this->view->foo = 'test';
$this->view->bar = '1234';

$viewVars = get_object_vars($this->view);
// $viewVars now contains all public properties (view variables)

最后一个示例对于使用$view = new Zend_View();

手动创建的视图对象也同样有效

答案 1 :(得分:7)

有一种更优雅的方式:$this->viewModel()->getCurrent()->getVariables();

对于嵌套的viewModel:$this->viewModel()->getCurrent()->getChildren()[0]->getVariables();

答案 2 :(得分:2)

$this->view->getVars()

或从视图内部

$this->getVars()

答案 3 :(得分:1)

就我而言,我需要从另一个视图中加载局部视图。实际上,这很容易。不必担心让变量从父视图传递到子视图,只需传递父视图对象。

<?php echo $this->partial('my-view.phtml', $this); ?>