2011-07-09 127 views
2

所以,我有兩個變量$posts$comments分別保持信息和評論的陣列,我有一個接受這些變量,執行foreach循環並打印它們在同一頁上的單獨視圖。這裏的問題是,我如何將兩個變量傳遞給視圖?將多個變量傳遞給視圖?

如果它的單個變量我通過它像這樣$this->load->view('myview',$myvar)

我試着把它作爲一個數組像這樣傳遞,但它仍然不起作用。

$data=array($var1,$var2); 
$this->load->view('myview',$data); 

任何幫助將不勝感激!謝謝。

+2

你如何使用視圖內傳遞的參數? – Gedrox

+0

說,我有這個變量$ comments ['cmt']被傳遞,一旦它在我的視圖中傳遞,它在cmt上執行一個foreach並單獨打印輸出。像這樣, 'foreach($ cmt as $ comment)' 'echo $ comment-> content;' hope thats clear。 –

+0

@arvid:你應該合併/聯合你想傳遞的變量,而不是自己創建一個數組。在你的例子中,'$ var1'將在你的視圖中變成'$ {0}','$ var2'將變成'$ {1}'。如果'$ var1'是你最後一條評論的'$ comments',那麼'foreach($ {0} as $ comment)',而只是執行'$ data = $ var1 + $ var2'。看到我的答案。然後你可以照常訪問它們。 – hakre

回答

9

您需要在傳遞視圖時訪問該視圖中的變量。使用array($var1,$var2);是有效的,但可能不是你想要實現的。

嘗試

$data = $var1 + $var2; 

$data = array_merge($var1, $var2); 

代替。有關如何訪問傳遞給視圖的變量的詳細文檔,請參閱Views

使用array($var1,$var2);的問題是,您將創建兩個視圖變量:${0}${1}(數組的鍵變成變量名,你有你的陣列中的兩個鍵:01)。

這些變量名稱是無效標籤因此您需要在視圖級別包含名稱{}

通過這種方式,你失去了有效命名變量的能力。

+0

非常感謝你。這似乎通過了變量,因爲它應該。 :) –

+0

不客氣。 – hakre

+0

您如何能夠通過此類實現分別循環發佈帖子和評論? – Gedrox

0

使用關聯數組看起來是最好的解決方案。 採取陣列

$data = array(
    'posts' => $posts, 
    'comments' => $comments, 
); 
$this->load->view('myview',$data); 

也許這將幫助你得到一個解決方案。

+0

編輯你的問題一點,所以它很清楚它指的是什麼,希望你不介意。 – hakre

+0

完全沒有!謝謝你! – Dolphin

2

在你的控制器做最簡單的事情:

$data['posts'] = $posts; 
$data['comments'] = $comments; 
$this->load->view('your_view', $data); 

然後,在你看來,你只是簡單地做一些事情,如:

foreach($posts as $post) { 
... 
} 

您可以在$數據變量持有任何對象你傳遞給你的觀點。當我需要的結果集,我從我的模型得到遍歷我這樣做的。

0

這又是一個和推薦的方法使用compact

$data1 = 'your data'; 
$data2 = 123; 
$data3 = array(); 

$this->load->view('myview', compact('data1', 'data2', 'data3'); 
-1
$this->render($views_array,$data); 
0

嘗試

$data1 = 'your data'; 
$data2 = 123; 
$data3 = array(); 

$this->load->view('myview', $data1 + $data2 + $data3); 
+0

感謝您使用此代碼段,這可能會提供一些有限的即時幫助。通過展示*爲什麼*這是一個很好的解決方案,並且使它對未來的讀者更有用,一個正確的解釋[將大大提高](// meta.stackexchange.com/q/114762)其長期價值其他類似的問題。請[編輯]你的答案以添加一些解釋,包括你所做的假設。 –