Yii 2 - 如何将变量传递给主视图文件到渲染器?

时间:2017-02-15 14:11:09

标签: php yii yii2 yii2-advanced-app

我基本上没有尝试过,因为我在我检查过的文档中没有找到任何内容。

我基本上想要传递一个变量ie。 layouts/main.php所以它可以在$balance = MyClass::myMethod(); return $this->render('main', [ 'balance' => $balance, ]); file:

的范围内使用

我在哪里可以说:

 factorial(0, 1).
 factorial(N, F) :- 
       N > 0, 
       Prev is N -1, 
       factorial(Prev, R), 
       F is R * N.

谢谢。希望有人理解。

3 个答案:

答案 0 :(得分:2)

假设:您使用的是高级模板,其目录结构与enter image description here类似。

该过程从\ yii \ base \ View-> beginContent()开始,它返回以下内容:enter image description here

默认情况下./frontend/views/layouts/base.php被称为'viewFile';然后加载_clear然后加载main,最后显示$ content的内容。

为了覆盖$ content的默认值,必须覆盖* View-> beginContent()的默认行为。

尝试创建定义为./frontend/controllers/Controller->beginContent($viewFile, $ params = []){/...*/}的方法,看看是否有效对你而言。

答案 1 :(得分:2)

// layouts/main.php
var_dump($this->params);

// action method
$this->view->params['balance'] = $balance;

另请查看http://www.yiiframework.com/doc-2.0/guide-structure-views.html#using-blocks

答案 2 :(得分:0)

您可以先将该变量发送到查看文件,例如

$balance = MyClass::myMethod();

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

因此,您可以在views/controller_name/myview.php

中创建文件myview.php

您可以直接访问变量$balance。现在,您可以使用params中的myview.php将此变量传递给main.php(如果它是您的布局文件)。

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

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