2009-06-25 121 views
1

原諒問題的標題;花了20分鐘試圖寫一些連貫的(懷疑如果成功)。Cakephp:在控制器操作中維護hasMany/belongsTo關係

不管怎麼說,使用博客作爲一個例子,我們的模型是這樣的:

張貼的hasMany評論 評論屬於關聯後

比方說,我想添加一個新評論:保存評論的時候,我在調用保存之前需要在數據數組中包含父Post(Post.id)的外鍵。

因爲我想保留在上下文中用戶之間的關係 - 我 不想讓他們不得不選擇從選擇字段後的評論與相關聯 - 這裏的兩個選項我看到:

1)將評論表單放在帖子的視圖中。

2)將Post ID作爲參數(通過GET)傳遞給Comment.add動作(或者寫入/讀取/從Session讀取);保存並且 重定向回到父級Post.view。

選項1非常適合用於博客,但不適用於用戶配置文件,該用戶配置文件可能太長,無法在用戶視圖中整齊地包含該表單。

選項2的作品我猜,但我不得不寫一些Post-specific顯示/重定向條件爲 Comments.add行動,它似乎不正確;從我讀過的,我 應該試圖保持控制器 和模型之間的1:1關係。

作爲Web MVC最佳實踐可以接受#2嗎?還是有另一種選擇,我忽略了?

回答

1

我經常一起完成這兩件事。我已經將該表單放置在該文章的視圖中(可能使用元素,如果您想將其放在其他位置),但是要將其提交給控制器的添加操作(在這種情況下爲註釋)並傳遞帖子的ID。請注意 - 如果您需要實現私人帖子等,最好還是在評論控制器的添加操作中進行檢查。

0

這兩個選項對我來說似乎都很好。

  1. 如果表單太長,只需粘貼一個部分視圖。
  2. 我在多個控制器中看不到使用模型的問題。當然,你不應該在每個控制器中使用每個模型,但是如果你需要兩種模型,爲什麼不呢?