2016-02-11 45 views
1

显然,正确的方式来自控制器的变量传递给在ZF2一个观点是:

return new ViewModel(array(
     'myVar' => "Hello World", 
    )); 

并显示可变的方式是:

echo $this->myVar; 

然而,我发现,这也适用:

echo $myVar; 

是否有任何理由使用$this->,如果它不似乎没有必要?

+0

我想你需要提供更多的代码。 $ myVar存储在哪里?在什么范围? –

回答

2

请注意,“查看”上下文中的$this与其预期用途保持一致。
视图内的文件将始终指示当前视图对象(视图模型)。
虽然您仍然可以以这种方式访问​​视图变量:echo $myVar;
但是,这样的变量可以很容易地被覆盖在视图内容中,并因此成为具有自定义值的“本地”变量。
这里是一些实际的演示: 让我们分别有IndexController.php和查看文件index.phtml

IndexController.php

class General_IndexController extends Zend_Controller_Action { 

    ... 
    public function indexAction() { 
     ... 
     $this->view->myVar = "value from contr-er"; 

    } 
    ... 

} 

index.phtml

<?php $myVar = "myvar in view"; ?> 
<?php var_dump($myVar); ?> 
<?php var_dump($this->myVar); ?> 
.... // html markup 

的输出将是:

string 'myvar in view' (length=13) 
string 'value from contr-er' (length=19) 

虽然$this->myVar也可以在视图中被覆盖,但是$this作为视图对象可以让您与从控制器传递的所有变量(值)保持清晰直接的关系。