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