2010-04-15 30 views
5

爲什麼我應該使用組件而不是渲染局部的動作?Symfony:Action + partial和Component之間的區別

如果動作可以渲染部分,何時更好地使用組件?

給我吧..光

哈維

+2

行動無意渲染諧音。將部分作爲獨立的「迷你模板」使用,組件作爲「迷你動作和模板」。 – Tom 2010-04-15 14:07:34

回答

7

組件使用時要包括在網站的不同部分的某種塊(例如,「十佳銷售」或東西相似) - 需要一些控制器代碼來渲染。通過使用

include_component($module_name, $component_name, array('var1' => $var1));
,您可以將一個組件的輸出包含在另一個動作/部分/另一個組件的模板中,該動作應該由瀏覽器直接調用,因此您無法將其輸出包含在另一個模板中(沒有某種破解) 將組件視爲可重複使用的html塊,可將其包含在任何地方,vs將整個頁面呈現併發送到瀏覽器的動作

+0

Thanks !,這就是我一直在尋找的:「一個動作應該被瀏覽器直接調用,所以你不能在另一個模板中包含它的輸出(沒有某種破解)」。 但我現在的問題是:對於刪除組件並添加一種方法來在模板中包含操作(與組件相同),您有什麼看法?我在「思考」這個要求是爲了讓symfony更簡單。 – ziiweb 2010-04-15 15:14:04

+1

你會問什麼已經存在 - 組件完全*被設計用於在模板中包含「操作」。 – Raise 2010-04-15 15:24:54

+2

移除組件並不是一個好的理念,因爲它們是一個輕量級的操作版本(它們不通過路由系統,過濾器等,因此它們在工作時更有效率) – matei 2010-04-15 15:51:33

5

partial是可以在任何視圖頁面中重用的「模板」。其簡單的&快。所有$數據都必須作爲參數傳遞給partial。如果可能的話,應該首選imo。

組件就像一個'具有自己行爲的模板',可以在任何視圖頁面中重用。功能更強大,但與局部相比速度更慢。使用,如果你有需要的業務邏輯諧音(即動作/控制器)

http://www.symfony-project.org/book/1_0/07-Inside-the-View-Layer#chapter_07_code_fragments