2013-04-12 39 views

回答

1

CForm一個文檔,可以閱讀以下內容:

...我們可以在兩個部分劃分形式 :那些指定的每個單獨的形式投入, 那些裝飾形式輸入。 CForm對象代表前一部分...

...和CActiveForm代表後者。

換句話說,CForm指定窗體的元素,但是CActiveForm(作爲窗口小部件)呈現它。

查看源代碼,我們指出CForm也可以render()本身和它的渲染依賴於和由CActiveForm插件包裹通過引入其配置屬性activeForm,儘管呈現的輸入元件和按鈕是由它自己的方法renderElements()renderButtons()實施相對。默認情況下,它們的實現依賴於使用CHtml的靜態方法的類,它與渲染方法所做的完全相同(或幾乎完全相同)。當然,默認行爲可以通過擴展類來重寫。

這就是爲什麼它是一個品味的問題,要使用的方法:單獨CActiveForm部件結合表單域和按鈕致電CActiveForm實例或CForm類聲明形式的方便(必填)方法與他們在一個視圖文件表示聲明在單獨的配置文件中輸入規格,並通過指向適當的活動表單小部件和/或通過重寫默認呈現方法來自定義其呈現。後一種技術可以輕鬆地在多個動作中重複使用表格,並且不超過using form builder

1

查看here查看ActiveForm,CForm等等的實例。您還可以看到實時模型,查看&控制器文件。