2014-05-20 41 views
0

我想使用數據庫中的現有數據展示symfony2填充表單。 我想要的是更新數據。 爲此,我想在窗體上顯示當前數據。如何使用symfony2上的現有數據顯示填充表單

目前我正在獲取數據並填寫表單,但我認爲這不是最好的方法。

<form> 
{% for value in values %} 
    <input type="text" placeholder="{{ value.name }}"> 
    <input type="email" placeholder="{{ value.email }}"> 
    ... 
{% endfor %} 
</form> 

我知道如何創建createFormBuilder和AbstractTypes一種形式,而不是如何顯示或呈現這種形式充滿了來自實體的現有數據。

+0

您的數據來自哪裏?它是數據庫中的實體嗎?你如何創建你的表單? – Maerlyn

+2

Symfony具有用於生成和提交表單的最佳組件*表單*。請參閱官方文檔和實體類型。 http://symfony.com/doc/current/book/forms.html http://symfony.com/doc/current/reference/forms/types/entity.html – ZhukV

+0

我知道如何創建一個表單,這是不是重點。我問的是如何創建和顯示「填充」表單。 我用EntityManager從數據庫中獲取數據。 – Termosfera

回答

3

你爲什麼手工製作這個表格?您應該只有{{ form(form) }}。這就是爲什麼大家都問你你在哪裏創建它,因爲它和你填充它的地方是一樣的。從表格手冊:

public function newAction(Request $request) 
{ 
    // you can use a new instance of an entity or 
    // get existing data from your database 
    // e.g. $task = $em->getRepository('Bundle:Task')->find(1); 
    // and this data will fill your form. 
    $task = new Task(); 
    $task->setTask('Write a blog post'); 
    $task->setDueDate(new \DateTime('tomorrow')); 

    $form = $this->createFormBuilder($task) 
     ->add('task', 'text') 
     ->add('dueDate', 'date') 
     ->add('save', 'submit') 
     ->getForm(); 

    return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
     'form' => $form->createView(), 
    )); 
} 

請致電createFormBuilder?這是您輸入數據到表單的地方。傳遞的對象/數組中的數據將用作表單的填充數據。現在,您需要提供所需的數據,無論是來自數據庫的實體還是具有任意數據的數組。希望這可以幫助。

+0

非常感謝,就是這樣。我正在嘗試你提到的方式,並沒有工作,因爲我沒有從數據庫中正確地獲取數據,真是令人沮喪。 :d – Termosfera

相關問題