如何使用Cakephp将var从控制器传递到另一个视图

时间:2011-10-07 07:27:36

标签: cakephp variables view

我是Cakephp和OOP的新手,所以请原谅我,如果我尚未完全掌握MVC概念的话。我搜索了很多但找不到答案 - 也许我下面的工作方式不正确。我希望你能提供帮助。

我正在构建一个网站,其中包含许多与其表格和数据相关的元素。我打算使用视图来选择相关元素和所需的任何参数。

例如,我网站的主页将有两个元素 - latestusers元素和latestscores元素。我正在尝试使用与“other / index.ctp”中存储的用户或得分模型/控制器无关的视图。

我尝试使用set()将用户控制器(latestusers操作)中的变量传递到other / index.ctp视图,但viewVars仍为空。这可能是由于变量的范围(我认为对于用户文件夹中的视图来说很好,即特定于用户控制器的视图)。

我可以通过使用全局变量来实现我想做的事情,但我认为这忽略了MVC / OOP的要点。将不胜感激任何建议。

如果需要,我可以包含代码 - 在这个阶段它是相当基础的 - 但我觉得我的问题在于我如何处理事情,而不是代码本身。

干杯, 詹姆斯

1 个答案:

答案 0 :(得分:0)

是的,问题在于范围。如果您要在元素中使用变量,则需要从视图中传递它们。所以流程看起来像这样

  1. 控制器$this->set()将变量放入当前视图/布局
  2. 您的视图/布局使用当前元素路径调用$this->element
  3. 您的元素使用这些变量。
  4. 在数字2中,您需要将变量作为数组传递。烹饪书上的这一部分提供了更多信息:http://book.cakephp.org/view/1081/Elements

    <?php echo$this->element('helpbox',     
          array("helptext" => "Oh, this text is very helpful."));?>
    

    注意 - 我不明白问题的一部分。只是想确保将数据传递到正确的视图。您不应该在活动控制器中调用另一个控制器的视图。

    您的other/index.ctp应该是一个元素,应该从您的布局中调用该元素。