我需要對視圖中的數組進行遞歸迭代,並想知道這種情況下的最佳實踐是什麼?我試圖避免在控制器或模型中構建我想要的html輸出。如何處理視圖中的遞歸(mvc)?
僅供參考我正在使用框架codeigniter。
我需要對視圖中的數組進行遞歸迭代,並想知道這種情況下的最佳實踐是什麼?我試圖避免在控制器或模型中構建我想要的html輸出。如何處理視圖中的遞歸(mvc)?
僅供參考我正在使用框架codeigniter。
關於如何達到目的,必定會有各種各樣的觀點 - 而且很大程度上取決於結構的複雜性以及您希望如何組織觀點。
最簡單的你可能希望在你的視圖中使用PHP迭代語句。這在控制器將數據傳遞給視圖的基本CI示例中很常見,然後foreach循環在視圖中輸出數組元素或對象屬性。有些人可能不喜歡在他們的意見中使用PHP(例如,如果他們與害怕PHP語法的設計師共同開發),或者希望聘用CI(或第三方)誘惑類。然而,在你看來一些PHP沒有問題。有人指出,PHP已經是一種模板語言。
適用於複雜視圖的另一種方法是使用嵌套視圖或連接視圖。 您可以加載一個視圖,其中有一個迭代語句,每個迭代語句都會加載一個視圖。或者相反,你可以在你的控制器做迭代,並且只是在連接每個視圖的輸出,就像這樣:
// iterate through a DB result set to create a block of markup
foreach($result_set as $result)
{
$view_set .= $this->load->view('result_view_1',$result,TRUE); // the third argument allows us to return the output string.
}
// now determine what view will display this bock of markup
$this->load->view('results_page_A',array('view_set' => $view_set));//
這種方法的好處是,你的意見是由其他控制器或動作可重複使用。
感謝您的回覆。我會嘗試按照你的「另一個評價」來實現遞歸視圖 – simon99 2010-10-19 17:51:13
此功能包含在內置的模板類中。我最近做了一個項目,我們希望在視圖內部沒有任何本地PHP代碼的情況下創建視圖。我剛剛在一個實時頁面中測試了這個例子,在CI 2.1.3中100%工作。
作爲一個具體的例子,考慮這個代碼顯示(以最小的格式)在酒店可用的一系列房間,並顯示每個房間每天旅行的每日費率。 (2天,在這個例子中)
{available_rooms}
<p>{room_type} {total_rate}</p>
{room_rates}
<p>${room_rate} {room_date}</p>
{/room_rates}
<hr>
{/available_rooms}
用了把類似於:
1 King Bed 119.98
59.99 2013-03-23
59.99 2013-03-24
1 King Bed 119.98
59.99 2013-03-23
59.99 2013-03-24
2 Double Beds 139.98
69.99 2013-03-23
69.99 2013-03-24
2 Double Beds 139.98
69.99 2013-03-23
69.99 2013-03-24
我用我的控制器將數據傳遞給模板引擎,像這樣:
$this->parser->parse(/reservations_view', $this->data);
這是我在這個例子中成功使用的數據數組。在將$ this-> data傳遞給解析器之前,該數組首先被分配給$ this-> data-> available_rooms。
> available_rooms > 0 > room_type = 1 King Bed
> available_rooms > 0 > total_rate = 119.98
> available_rooms > 0 > room_rates > 0 > room_rate = 59.99
> available_rooms > 0 > room_rates > 0 > room_date = 2013-03-23
> available_rooms > 0 > room_rates > 1 > room_rate = 59.99
> available_rooms > 0 > room_rates > 1 > room_date = 2013-03-24
> available_rooms > 1 > room_type = 1 King Bed
> available_rooms > 1 > total_rate = 119.98
> available_rooms > 1 > room_rates > 0 > room_rate = 59.99
> available_rooms > 1 > room_rates > 0 > room_date = 2013-03-23
> available_rooms > 1 > room_rates > 1 > room_rate = 59.99
> available_rooms > 1 > room_rates > 1 > room_date = 2013-03-24
> available_rooms > 2 > room_type = 2 Double Beds
> available_rooms > 2 > total_rate = 139.98
> available_rooms > 2 > room_rates > 0 > room_rate = 69.99
> available_rooms > 2 > room_rates > 0 > room_date = 2013-03-23
> available_rooms > 2 > room_rates > 1 > room_rate = 69.99
> available_rooms > 2 > room_rates > 1 > room_date = 2013-03-24
> available_rooms > 3 > room_type = 2 Double Beds
> available_rooms > 3 > total_rate = 139.98
> available_rooms > 3 > room_rates > 0 > room_rate = 69.99
> available_rooms > 3 > room_rates > 0 > room_date = 2013-03-23
> available_rooms > 3 > room_rates > 1 > room_rate = 69.99
> available_rooms > 3 > room_rates > 1 > room_date = 2013-03-24
你對「結構」有什麼意思?你能提供一個例子嗎? – thomaux 2010-10-19 05:51:21
如果您顯示代碼的相關部分,則回答此問題會更容易。 – Mischa 2010-10-19 06:28:32
@Anzeo:當我說結構我打算說數據結構;在我的情況下,一個數組 – simon99 2010-10-19 17:44:41