2012-10-16 81 views
1

我有一個通過CakePHP請求中的模型編譯的嵌套數組。該數組可以嵌套在可變深度,並且內容將被返回給用戶。如何在CakePHP視圖中呈現嵌套數組?

當前,此數組的循環和呈現過程是使用請求的View元素中的函數完成的。這個函數首先在基本數組的深度處被調用,並且對於具有更多數組子元素的任何數組元素重複該函數。例如。

function print_depth($elements) { 
    foreach($elements as $element) { 
    echo $element['title']; 

    if($element['children']) { 
     print_depth($element['children']); 
    } 
    } 
} 

print_depth($elements); 

通過該處理,我可以打印出陣列的所有等級,同時仍然保持視圖(因此,它是可更換皮膚)內的標記的靈活性,但我想象這是該函數的不正確的位置即處理這個。

這個操作還有更多的MVC有效過程嗎?

回答

2

從MVC的角度來看,它可能是它所屬的地方,因爲它是爲視覺表示準備數據的意見責任。但是對於更加乾燥的方法,您可以在幫助程序中實現此功能。

+0

謝謝,但不會這是無效的,只是因爲該功能會調用視圖文件中的函數內現有的?我知道PHP會允許這一點,但認爲它是皺眉。 – Rhys

+0

通常我不會將它稱爲無效的,它只是有點「髒」,因爲它可能在多視圖中很容易違反DRY原則,並且因爲它將成爲全球可訪問的函數,有些人可能會認爲它是違反MVC原則,因爲它可以在視圖之外提供「內部」視圖功能,但在視圖之外也可以使用助手,所以我會說這是一種分裂的頭髮。無論如何,對於一個乾淨的方法,你應該使用一個幫手,這是推薦的方法。 – ndm