在完成控制器操作后,CakePHP $ this-> viewVars在插件中丢失了

时间:2012-03-17 10:27:47

标签: php cakephp-2.0

我在Plugin控制器中设置了一个viewVar。在渲染之前我调试($ this-> viewVars)以检查相关变量是否在数组中(它是)。

我设置的变量是私有类变量,但我也尝试创建它的本地副本,并使用set(compact())表单来设置变量。

所以我的问题不是语法。

当我在视图中调试变量时,我发现它没有定义。我的主应用程序AppController中设置的变量正确传递给视图。

如果我在整个应用程序的各个点调试viewVars,我会看到

  • 主App Controller设置一个变量,该变量存在于我的插件AppController
  • 在我的插件Controller(不是AppController)的末尾,viewVars显示我的变量
  • 它在我的视图中消失了,只留下我的应用程序AppController中的变量集

如果我在我的主AppController中设置变量(在过滤器之前),那么它将出现在我的最终视图输出中。

如果我在我的插件中添加'beforeRender'方法进行调试($ this-> viewVars),它只显示在主AppController中设置的变量,而不是我插件中的变量。

如何从插件Controller中获取变量以设置为视图变量?

1 个答案:

答案 0 :(得分:0)

问题在于controller callbacks中的事件序列。

我在插件beforeFilter()方法中愚蠢地调用了一个渲染命令。这应该在afterFilter()方法中完成。移动它解决了这个问题。