Doctrine orm 无法使用Symfony2中的表单将数据插入数据库

Doctrine orm 无法使用Symfony2中的表单将数据插入数据库,doctrine-orm,symfony,Doctrine Orm,Symfony,我有一个表单,用户在其中输入数据。然后,当他们单击“提交”时,这些数据将保存到数据库中 唯一的问题是,它不会这样做。实际情况是,单击submit时,页面将重新加载,并且表单中输入的所有数据仍将显示。我去检查数据库,但记录还没有更新 没有错误,但根据分析器,在加载页面时会运行三条SQL语句。这三条语句都是SELECT语句,而不是INSERT语句 以下是控制器中页面的代码(包括“INSERT”语句): 下面是表单的代码(出于空间原因,我省略了一些字段,但它们都是相同的): {{form_标签(f

我有一个表单,用户在其中输入数据。然后,当他们单击“提交”时,这些数据将保存到数据库中

唯一的问题是,它不会这样做。实际情况是,单击submit时,页面将重新加载,并且表单中输入的所有数据仍将显示。我去检查数据库,但记录还没有更新

没有错误,但根据分析器,在加载页面时会运行三条SQL语句。这三条语句都是SELECT语句,而不是INSERT语句

以下是控制器中页面的代码(包括“INSERT”语句):

下面是表单的代码(出于空间原因,我省略了一些字段,但它们都是相同的):


{{form_标签(form.id,'id*',{'attr':{'class':'title'}}}}} {{form_errors(form.id)}} {{form_小部件(form.id,{'attr':{'class':'textfield'}}}}

{{form_标签(form.title,'title*',{'attr':{'class':'title'}}}}} {{form_errors(form.title)}} {{form_小部件(form.title,{'attr':{'class':'textfield'}}}}

如果你需要更多的代码,我会提供他们。我认为这两位代码就是问题所在


干杯

在持久化之前必须填充实体,我给您举一个例子:

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(),
    ));
}
<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>
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(),
    ));
}