CakePHP 3.7 - 从控制器访问视图变量

CakePHP 3.7 - Access view variable from controller

AppController->beforeRender() 内部,我会检查视图变量是否已设置并查看其值。

如何从 CakePHP 3.7 中的控制器访问视图变量?

这曾经可以通过 $this->viewVars['variable_name'] 实现,但已被弃用。

我试过 $this->viewBuilder()->getVars() 但是 returns 一个空数组,当然还有视图变量。

从评论中总结一个答案:这不是直接可能的。
通过 viewBuilder() 访问变量将不起作用,因为它仅在构建视图时接收 viewvars。

封装要访问的变量的自定义元素可能是一个解决方案。

我最后将一些变量设置为默认值:在 AppController->initialize() 中,视图变量 status 设置为 "OK",然后其他控制器和方法可以简单地覆盖它。

使用 Cakephp 4(我相信它也适用于 C3)

$this->viewVars()['variable_name']

会成功的!