2017-02-15 46 views
1

我基本上没有试过,因为我还没有在我查了文档发现任何东西。Yii 2 - 如何将变量传递给渲染器的主视图文件?

我基本上要传递一个变量,即。 $balance所以它会在layouts/main.php文件的范围可供选择:

我在哪里可以这样说:

$balance = MyClass::myMethod(); 

return $this->render('main', [ 
    'balance' => $balance, 
]); 

谢谢。希望任何人都明白。

回答

0

假设:您使用的是先进的模板,并有类似enter image description here的目录结构。

该过程开始围绕\ YII \基\视图 - > beginContent(),它返回下列信息:enter image description here。默认情况下./frontend/views/layouts/base.php被称为'viewFile';然后加载_clear,然后加载main,最后显示$ content的内容。

要覆盖的内容$默认值,覆盖*查看 - > beginContent的默认行为()是必要的。

尝试创建一个定义为./frontend/controllers/ Controller-> beginContent($ viewFile,$ params = []){/ ... * /}的方法,看看它是否适用于您。

0

您可以发送变量首先查看文件一样,

$balance = MyClass::myMethod(); 

return $this->render('myview', [ 
'balance' => $balance, 
]); 

所以,你可以在views/controller_name/myview.php

有创建文件myview.php可以直接$balance访问变量。现在,你可以通过这个变量myview.php使用params到main.php(如果它是你的布局文件)。

$this->params['balance'] = $balance; 

并通过$this->params['balance']访问main.php中的变量。