2013-02-02 60 views
0

我在尋找指導如何使用從現有對象獲取的數據預填表單。我想它應該使用方法setData,我期待一些簡單的像 $form->setData($existingObject)但沒有成功。Symfony2窗體 - 編輯保存的數據

爲了更好的解釋讓我們舉個簡單的例子。
我有表格,用戶輸入他的個人資料。形式是在控制器通過調用form.factory創建,

$form = $this->get('form.factory')->create(new personType()); 

我有表單類「personType」這種形式的類定義了所謂的「人」 data_class對象。用戶提交表單,數據保存在對象人員中,並且該對象保存在會話中。我需要有選項重新打開表格並填寫保存在會話中存儲的對象中的數據。

回答

0

在你的控制器,你需要創建/找到你的對象,然後把它傳遞給你的CreateForm

$任務=新的任務();
$ task-> setTask('Write a blog post');
$ task-> setDueDate(new \ DateTime('tomorrow')); (新的TaskType(),$任務);

http://symfony.com/doc/master/book/forms.html#creating-form-classes

在你爲例,嘗試

$人= ...; (new personType(),$ person);創建新personType(),$ person);

+0

感謝您的提示,我將調用改爲$ form = $ this-> get('form.factory') - > create(new personType(),$ person);這很好,現在我看到變量$ options ['data']包含我的對象在函數buildForm中,但我失去了最後一步我想,我試圖調用$ builder-> setData($ options ['data']);但沒有任何改變。如果我在控制器中轉儲變量$ form,我發現它已經包含從對象中取得的值,但表單域仍然是空的。字段顯示在樹枝中,像這樣{{form_widget(form.name)}}我不指望有任何問題。 – jros

+0

好的,我解決了這個問題。 Tib是正確的,他的代碼解決了這個問題,但我沒有在我的類getter中,只有魔術方法__get,所以不幸的是沒有錯誤也沒有數據。 – jros