2011-10-07 63 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

相關問題