2011-10-12 94 views
2

在我正在構建的這個項目中,我有許多表單來向網站使用的數據庫添加數據。顯然,如果用戶添加數據,他們必須能夠編輯這些數據(或刪除它)。將數據從數據庫顯示到Symfony2中的表格

我已經瀏覽過這本書,它會詳細討論如何使用表單添加數據。但是,似乎沒有提及如何使用表單來編輯數據。

這是如何實現的?

乾杯

回答

3

如果你想,這是很容易寫你的編輯操作沒有教義,你應該做這樣的事情:

public function editAction($id) { 
$em = $this->getDoctrine()->getEntityManager(); 
$repository = $em->getRepository('YourBundle:YourEntity'); 
$element = $repository->find($id); 
if (false !== is_null($element)) { 
    throw $this->createNotFoundException('Couldn\'t find element ' . $id . '!'); 
} 
$form = $this->createForm(new YourFormType(), $element); 
$request = $this->getRequest(); 
if ($request->getMethod() == 'POST') { 
    $form->bindRequest($request); 
    if ($form->isValid()) { 
     $em->persist($element); 
     $em->flush(); 
     $this->get('session')->setFlash('system-message', 'Element Updated!'); 
     return $this->redirect($this->generateUrl('Your_route')); 
    } 
} 
return $this->render('YourBundle:YourView:your_template.html.twig', array('element' => $element, 'form' => $form->createView()));} 

編輯行動與行動的唯一不同的是它不是創建一個新的「元素」實例,而是從實體管理器中獲取它,甚至可以在將元素附加到表單之前爲其設置任意值。

我希望它有幫助!

+0

這已經幫了很多。但是,它不會編輯記錄。它會取回記錄,然後在我提交後將其添加爲新記錄。是什麼原因造成的? – mickburkejnr

+0

忽略最後的評論。我豎起了代碼。非常感謝!!! – mickburkejnr

1

使用generate:doctrine:crud任務生成編輯/更新的用戶代碼。你會看到newAction和editAction非常相似。

+0

這將做什麼?我寫了代碼保持數據到數據庫的工作正常。這個命令會覆蓋這段代碼嗎? – mickburkejnr

+0

好問題...我不知道。使用版本控制來避免意外。 – greg0ire

+0

爲什麼這個命令感覺像你不應該按的大紅色按鈕。當我嘗試時,我會盡快回復你。 – mickburkejnr

相關問題