【问题标题】:CakePHP 3.7 - Access view variable from controllerCakePHP 3.7 - 从控制器访问视图变量
【发布时间】:2019-01-11 13:42:04
【问题描述】:

AppController->beforeRender()里面我会检查一个视图变量是否已经设置并查看它的值。

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

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

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

【问题讨论】:

  • 视图构建器仅在构建视图时接收变量,直到那时它们仅存在于$viewVars属性中。为什么你需要从控制器访问视图变量?对于您试图解决的任何问题,也许有更好的解决方案。
  • 基本上,我希望视图变量在尚未设置时回退到默认值。例如。根据是否存在“错误”变量来管理“状态”变量。
  • 如果这是您在很多视图中都需要的东西,也许封装该逻辑的元素是要走的路?
  • 是的,我想我最好实现类似的东西。

标签: variables cakephp view cakephp-3.0


【解决方案1】:

总结来自 cmets 的答案:这是不可能的。
通过viewBuilder() 访问变量将不起作用,因为它仅在构建视图时接收视图变量。

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

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

【讨论】:

    【解决方案2】:

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

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

    会成功的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      相关资源
      最近更新 更多