【问题标题】:How to pass var from controller into a different view with Cakephp如何使用 Cakephp 将 var 从控制器传递到不同的视图
【发布时间】:2011-10-07 15:32:17
【问题描述】:

我是 Cakephp 的新手,而且确实是 OOP,所以如果我还没有完全掌握 MVC 概念,请原谅我。我进行了很多搜索,但找不到答案-也许我在下面的工作方式不正确。我希望你能帮忙。

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

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

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

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

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

干杯, 詹姆斯

【问题讨论】:

  • 是的,示例代码将是一个好主意,可以查看您到底在做什么。我认为您不想直接与 viewVars 混淆。

标签: cakephp variables view


【解决方案1】:

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

  1. 控制器 $this->set()s 将变量添加到当前视图/布局中
  2. 您的视图/布局使用当前元素路径调用$this->element
  3. 您的元素使用这些变量。

在数字 2 中,您需要将变量作为数据数组传递。食谱上的这一部分提供了更多信息:http://book.cakephp.org/view/1081/Elements

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

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

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

【讨论】:

  • 感谢约翰的快速回复。我想我一定是在做违法的事情!经过多年编写程序代码,我花了一些时间来了解 MVC,尤其是在页面流方面。我会重新考虑我想要实现的目标。
猜你喜欢
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2010-12-16
相关资源
最近更新 更多