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

Yii 2 - how to pass a variable to main view file to the renderer?

我基本上什么都没试过,因为我在我检查的文档中没有找到任何东西。

我基本上想传递一个变量,即。 $balance 因此它将在 layouts/main.php 文件的范围内可用:

我在哪里可以这样说:

$balance = MyClass::myMethod();

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

谢谢。希望大家理解。

假设:您正在使用高级模板并且目录结构类似于

该过程围绕 \yii\base\View->beginContent() 开始,它 returns 以下内容:.

默认情况下 ./frontend/views/layouts/base.php 被称为 'viewFile';依次加载 _clear,后者又加载 main,最后显示 $content.

的内容

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

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

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

$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中的变量。

// 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