2011-09-21 125 views
2

我有一個表單,用戶輸入數據。然後,當他們點擊提交時,這些數據將被保存到數據庫中。無法使用Symfony2中的表單將數據插入到數據庫中

唯一的是,它不這樣做。發生的情況是,當點擊提交時,頁面將重新加載,並且所有輸入的數據仍然會顯示。我去檢查數據庫,並且記錄沒有被更新。

沒有錯誤,但根據探查器有三個SQL語句在頁面加載時運行。所有這三個都是SELECT語句,而不是一個INSERT語句。

下面是控制器的頁面(包括「插入」語句)代碼:

public function addAction(Request $request) 
{ 

    $pageadd = new Content(); 
    $form = $this->createForm(new PageAdd(), $pageadd); 

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

     if ($form->isValid()) { 
      $em = $this->getDoctrine()->getEntityManager(); 

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

      return new Response('Created page id '.$pageadd->getId()); 

     } 
    } 

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

} 

下面是形式的代碼(我省略了一些空間原因字段。但他們都是相同的):

<form action="{{ path('ShoutAdminBundle_adminpageaddpost') }}" method="post" {{ form_enctype(form) }} class="blogger"> 

    <p class="row"> 
     {{ form_label(form.id, 'ID*', { 'attr': {'class': 'title'} }) }} 
     {{ form_errors(form.id) }} 
     {{ form_widget(form.id, { 'attr': {'class': 'textfield'}}) }} 
    </p> 
    <p class="row"> 
     {{ form_label(form.title, 'Title*', { 'attr': {'class': 'title'} }) }} 
     {{ form_errors(form.title) }} 
     {{ form_widget(form.title, { 'attr': {'class': 'textfield'}}) }} 
    </p> 

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

如果您需要更多的代碼,我會提供他們。我認爲這兩個代碼是問題所在。

乾杯!

回答

2

的堅持之前,必須填寫的實體,我給你舉個例子:

public function saveAction(Request $request) 
{ 
    if ($request->getMethod() == 'POST') { 
     // EntityManager 
     $em = $this->getDoctrine()->getEntityManager(); 

     // New entity 
     $registration = new Customer(); 

     // Build the form 
     $form = $this->createFormBuilder() 
     ->add('name', 'text') 
     ->add('country', 'text') 
     ->add('email', 'email') 
     ->add('certificate', 'text') 
     ->add('provider', 'entity', array(
       'class' => 'YourCustomBundle:Partner', 
     )) 
     ->getForm(); 

     // Populate 
     $form->bindRequest($request); 

     // Check 
     if($form->isValid()) { 
      // Fill the entity 
      $registration->setName($form['name']->getData()); 
      $registration->setCountry($form['country']->getData()); 
      $registration->setEmail($form['email']->getData()); 
      $registration->setCertificate($form['certificate']->getData()); 
      $registration->setProvider($form['provider']->getData()); 
      $em->persist($registration); 
      $em->flush(); 
     } 

    } 
    return $this->render('YourCustomBundle:Default:index.html.twig',array(
      'form' => $form->createView(), 
    )); 
} 
相關問題