2012-07-26 77 views
0

我嘗試使用表單更新數據庫中的數據。symfony2:更新數據錯誤

控制器:

public function addAction($id) { 

    $em = $this->getDoctrine()->getEntityManager(); 
    $product = $em->getRepository('AcmeStoreBundle:Product')->find($id); 
    if (!$product) { 
    $product = new Product(); 
    } 
    $form = $this->createForm(new PageAdd(), $product); 
    $request = $this->getRequest(); 

    if ($request->getMethod() == 'POST') { 
    $form->bindRequest($request); 

    $name=$this->get('request')->request->get('name'); 
    $price=$this->get('request')->request->get('price'); 
    $description=$this->get('request')->request->get('description'); 

    if ($form->isValid()) { 
     $product->setName($name); 
     $product->setPrice($price); 
     $product->setDescription($description);  

     $em->persist($product); 
     $em->flush(); 

     /*Llamando a la plantilla de listados*/ 
     $product = $em->getRepository('AcmeStoreBundle:Product')->findAll(); 

     /*Enviando los datos a la plantilla y Renderizandola*/ 
     return $this->render('AcmeStoreBundle:Default:pageadd.html.twig', array('Product' => $product)); 
    } 
    } 

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

show.html.twig文件

<form action="{{ path('Product_add',{'id':product.id}) }}" 
{{ form_enctype(form) }}> 

      {{ form_errors(form) }} 

      {{ form_rest(form) }} 

       <input type="submit" value="Save This Page" class="savebutton" /> 

     </form> 

及其給我錯誤

方法 「ID」 爲對象「的Acme \ StoreBundle \實體\產品「在AcmeStoreBundle中不存在:默認值:show.html.twig,第2行 500內部服務器錯誤 - Twi g_Error_Runtime

+1

不知道是否它的問題,但在一個你'使()'調用產品與資本「P」,而在其他小。 – Maerlyn 2012-07-26 15:48:47

回答

0

這意味着您的產品實體中缺少getId()方法。

public function getId() 
{ 
    return $this->id; 
} 
+0

我將此代碼添加到我的產品實體,但它仍然給我同樣的錯誤。我認爲這個問題在show.html.twig中。 – user1328671 2012-07-26 13:49:19

+0

發佈您的getId()代碼,因爲您的錯誤信息可能存在拼寫錯誤。另外,閱讀手冊中的表格部分並遵循基本示例。沒有理由拉取名稱/價格/描述,然後重新設置它們。 bindRequest負責照顧。 – Cerad 2012-07-26 16:19:11

+0

我認爲你已經混淆了兩個'渲染'線。對show.html.twig的調用應該在保持對象之後,而pageadd.html.twig如果表單無效 – 2012-07-26 16:55:51