我不久前开始使用Zend Framework 2.
在控制器中,我使用
发送变量进行查看 return $viewmodel->setVariables(array(
'exampleVariable' => 'exampleValue',
'exampleVariable2' => array(
'variableInArray' => $this->getMacAddress(),
),
));
在我正在做的观点中:
$exampleVariable = $this->exampleVariable
// and
$exampleVariable2 = $this->exampleVariable2
然后直接使用这些变量,所以每次使用它时都不需要经过$this
。
我正在研究它,并修改了一些东西,虽然我想调试,但我删除了前两行希望它会破坏。
令我惊讶的是,$exampleVariable
和$exampleVariable2
仍然可用。起初,我认为这是一个缓存问题,但事实证明,使用SetVariables()
发送到视图的所有数组键都可以作为变量进行访问。
我的问题是,如何在没有$this
的情况下访问它们?
我可能会被警告这个,但这个问题只是为了好奇。我不会直接使用变量,因为我更喜欢在视图中创建它们,所以我可以对它们进行注释并添加它们各自的变量类型和内容。
答案 0 :(得分:1)
如果你看一下PHPRenderer类,特别是PHPRendered :: render()
Zend\View\Renderer\PHPRenderer
您将使用extract(http://php.net/extract)
查看视图的生成方式这允许在视图/模板内本地访问任何视图变量。
答案 1 :(得分:1)
看看here
分配给视图的变量 - 通过视图模型,变量容器,或者只是通过将变量数组传递给render() - 可以通过三种方式检索:
解释:
PhpRenderer使用extract
函数将变量提取到函数(render)范围中。这允许在模板中使用$exampleVariable
。此外,PhpRenderer使用魔术__get
功能。因此,如果您致电$this->exampleVariable
,它会直接查看数据数组。