Symfony 2 HandleRequest似乎无法正常工作

时间:2016-08-08 12:52:40

标签: php symfony doctrine-orm symfony-forms

我尝试使用AJAX方法使用POST提交表单。

我正在使用symfony 2.8.9

主页面是Fullcalendar视图,表单位于popUp模式中:

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
          <h4 class="modal-title" id="myModalLabel">Définition d'un événement</h4>
        </div>
        {{ form_start(FORM) }}
        <div class="modal-body">
            {{ form_row(FORM.dateDebut) }}
            {{ form_row(FORM.dateFin) }}
            {{ form_row(FORM.salle, {'attr' : {'onChange' : 'afterSelectSalle();'} }) }}
            {{ form_row(FORM.formateur, {'attr' : {'onChange' : 'afterSelectFormateur();'} }) }}
            {{ form_row(FORM.module, {'attr' : {'onChange' : 'afterSelectModule();'} }) }}
            {{ form_row(FORM.promotion, {'attr' : {'onChange' : 'afterSelectPromotion();'} }) }}
            {{ form_row(FORM.type) }}
        </div>
        <div class="modal-footer">
            <input type="hidden" id="{{ FORM.vars.name }}_eventId" value=""/>
            <button type="button" id="enregistrer" class="btn btn-success" data-dismiss="modal">Enregistrer</button>
            <button type="button" id="annuler" class="btn btn-default" data-dismiss="modal">Annuler</button>
            <button type="button" id="supprimer" class="btn btn-danger" data-dismiss="modal">Supprimer</button>
        </div>
        {{ form_end(FORM) }}
        <div class="modalAttente"></div>
    </div>
</div>

这是我要求保存以前表格中设置的数据的方法:

function saveInBase(donnees) {
    var ajout = true;
    if(eventSelectionne !== null) {
        ajout = false;
    }
    $.ajax({
        type: 'POST',
        url: ajout ? Routing.generate('planning_create') : Routing.generate('planning_edit', {id: donnees.id}),
        dataType: 'json',
        data: donnees,
        success: function (data) {
            eventSelectionne = getInfosEvent(eventSelectionne, data);
            if (ajout) {
                $('#calendar').fullCalendar('renderEvent', eventSelectionne,     true);
            } else {
                $('#calendar').fullCalendar('updateEvent', eventSelectionne);
            }
        },
        complete: function () {
            $('.btn#enregistrer').prop('disabled', false);
            displayModalAttente(false);
        }
    });
}

我遇到的问题是,当我提交表单时,我的控制器会返回500错误。

public function createAction(Request $request)
{
    $event = new Event();
    $form = $this->createForm(
            EventType::class,
            $event
        );
    $form->handleRequest($request);

    if($form->isSubmitted() && $form->isValid())
    {
        $em = $this->getDoctrine()->getManager();
        $event->setDateSaisie(new \DateTime);
        $em->persist($event);
        $em->flush();
        return new JsonResponse($event->toJson(), JsonResponse::HTTP_OK, array('Content-Type' => 'application/json'));
    }
    return new JsonResponse(array('errors' => $this->getErrorsAsArray($form)), JsonResponse::HTTP_BAD_REQUEST, array('Content-Type' => 'application/json'));
}

我的$ request var包含表单数据,但行 $ form-&gt; handleRequest($ request)不起作用,并显示以下错误:

  

执行&#39; INSERT INTO事件时发生异常(date_debut,   date_fin,date_saisie,type,formateur_id,salle_id,promotion_id,   module_id)VALUES(?,?,?,?,?,?,?,?)&#39;用params [null,null,   &#34; 2016-08-08 12:50:50&#34;,null,null,null,null,null]:

表单传输的所有数据都已消失,我不明白为什么不这样做。

使用AJAX方法在POST中提交表单的任何想法?

0 个答案:

没有答案