2012-11-19 50 views
1

在MVC應用程序中,我從視圖中向控制器發送了一個數組(行)數組。數組中的所有行將代表數據庫中的一行。這個循環放在哪裏?

我被困在這個點:
- 我可以在模型中定義一個接受所有行的數組的函數,並在那裏循環行。
- 或者我可以定義一個接受單行的函數,並在控制器的一個循環中調用它。

哪一種方法是正確的(從MVC的角度來看)?

編輯:
的問題是我應該做的:
$model->insertData($arrayOfRows);

foreach($arrayOfRows as $row) {
$model->insertRow($row);
}

+0

控制器只傳遞值。處理它們應該發生在模型層。從你模糊的解釋 - 很可能循環將在服務級別。 –

回答

0

所以我最終使用的第一個解決方案:
$model->insertData($arrayOfRows);
和循環模型內部行的陣列。

0

在適當的MVC應用程序,你的數據不會從視圖中來,並在去控制器第一名。

您的數據應該存在於模型中。您的數據庫連接和從其中取出的所有數據都應該由模型對象來表示,並且只有在需要呈現(例如,可視化數據)時纔會暴露給視圖/控制器,或者製作與數據相關的應用程序級決策。

+0

來自視圖我的意思是這個信息被提交插入到數據庫中。 – undefined

+0

Gotcha。我的錯。 在這種情況下,您希望將數據直接傳遞給模型(可能通過控制器,具體取決於您如何設置),並且模型應該執行循環輸入數據的工作,連接到數據庫,並以適當的數據庫格式插入新數據。 – honktronic

-1

你試試下面的模式,

var $arr = []; 

$arr.push($row); /*insert all rows to an array */ 

then from the jquery $.post, set the array to the parameter like, 

$.post(
    '<controller/action>', 
    { m: "[" + $arr + "]" }, 
    function (data){} 
); 
+0

jquery不在問題中提及。 Downvoted。 – undefined