2011-10-07 57 views
0

我是Cakephp和OOP的新手,所以如果我还没有完全理解MVC概念,请原谅我。我搜索了很多,但无法找到答案 - 也许我在下面的工作方式是不正确的。我希望你能帮忙。如何将var从控制器传递到与Cakephp不同的视图

我正在构建一个网站,它将有许多与他们的表和数据相关的元素。我打算使用视图来挑选相关元素和所需的任何参数。

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

我已经尝试使用set()将用户控制器(latestusers操作)中的变量传递到其他/ index.ctp视图,但viewVars保持为空。这可能是由于变量的范围(我认为它适用于用户文件夹中的视图,即特定于用户控制器的视图)。

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

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

干杯, 詹姆斯

+0

是的,示例代码将是一个好主意,看看你在做什么。我认为你不想直接与viewVars混淆。 – Lasar

回答

0

是的,问题是与范围。如果您要在元素中使用变量,则需要从视图中将它们传入。因此,流动会是这个样子

  1. 控制器$this->set()■变量到当前视图/布局
  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应该是一个元素,该元素应该从布局中调用。

+0

感谢您的快速回复。我以为我一定在做非法的事情!经过多年编写程序代码之后,我花了一点时间让我的主管围绕MVC,特别是关于页面流。我会重新思考我想要达到的目标。 – tvrjames

相关问题