我无法从表单symfony2 doctrine中将数据插入数据库

时间:2014-04-16 15:15:31

标签: database forms symfony doctrine-orm controller

我提交表单时无法在数据库中找到数据而且没有错误,我需要你的帮助

我无法将数据插入到数据库symfony2 doctrine中 如果你发现错误请提及 //这是我的联系人行动

  public function contactUsAction() { // contact action
        $contact = new Contact();
        $form = $this->createForm(new ContactType(), $contact);
        $request = $this->getRequest();
        if ($request->isMethod('POST')) {
            $form->bind($request);
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($contact);
                $em->flush();
                $this->get('session')->getFlashBag()->add('Notice', 'Votre message a été bien envoyé');
            }
        }
        return $this->render('carRentalMainBundle:Main:contactUs.html.twig', array(
                    'form' => $form->createView(),
        ));
    }

// And this is my view 
this is my view 

{% extends 'carRentalMainBundle::layout.html.twig' %}
{% block body %}


    <div class="col-md-6">
    <h3>Contactez-nous</h3>
{% for flashMessage in app.session.flashbag.get('Notice') %}
    <ul><li class="alert-success">
    {{flashMessage}}
        </li></ul>
{% endfor%}
    <br/>
    <form  method="POST" action="{{path('car_rental_main_contact')}}" {{form_enctype(form)}} >
        <div class='form-group'>
{{form_errors(form.name)}}
{{form_label(form.name,' Nom :')}}
 {{form_widget(form.name)}}
        </div>
        <div class='form-group'>
{{form_errors(form.email)}}
{{form_label(form.email,' Email :')}}
 {{form_widget(form.email)}}
        </div>
        <div class='form-group'>
{{form_errors(form.subject)}}
{{form_label(form.subject,' Sujet :')}}
        </div>
 {{form_widget(form.subject)}}
        <div class='form-group'>
{{form_errors(form.content)}}
{{form_label(form.content,'Message :')}}
 {{form_widget(form.content)}}
        </div>           

{{form_rest(form)}}
        <input type="submit" class="btn-primary btn" value="Envoyer" >
    </form>
    </div>

    {% endblock %}

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

如果您使用的Symfony版本&gt; = 2.3,我想提供一些建议,您可以使用$form->handleRequest($request)来减少代码。有关它的更多信息,您可以从here ...

获得

关于您的问题,您可以在模板中设置{{form_errors(form)}},如上所述。或者通过$form->getErrorsAsString()在控制器中获取错误报告。

代码示例:

public function contactUsAction(Request $request) { // contact action
        $contact = new Contact();
        $form = $this->createForm(new ContactType(), $contact);

        $form->handleRequest($request);

        if ($form->isValid())
        {
            // if need to catch database flush exceptions 
            try
            {
                $em = $this->getDoctrine()->getManager();
                $em->persist($contact);
                $em->flush();

                $this->get('session')->getFlashBag()->add('Notice', 'Votre message a été bien envoyé');
            } catch (\Exception $e)
            {
                $this->get('session')->getFlashBag()->add('Notice', $e->getMessage());
            }
        }

        return $this->render('carRentalMainBundle:Main:contactUs.html.twig', array(
                    'form' => $form->createView(),
                     // for debug only
                    'form_errors_list' => $form->getErrorsAsString(),
        ));
    }

在您的模板中,您可以设置(仅适用于调试过程):

<pre>{{dump(form_errors_list)}}</pre>

答案 1 :(得分:0)

提交后是否有flashMessage?如果不是,则添加{{form_errors(form)}}以查看表单错误。