Не удается отправить форму из контроллера после вызова ajax [symfony] - PullRequest
0 голосов
/ 28 июня 2019

У меня есть представление, в котором мне нужно после нажатия кнопки отправить переменную javascript на контроллер, который содержит форму, которую я отправляю в базу данных. Поэтому после щелчка я использую ajax для вызова моего контроллера и загрузки HTML в том же виде, как это:

$(".month").click(function(){

            var click = $(this);

            var month = click.val();
            var year = $("#years").val();


            var url = Routing.generate('av_platform_formulaire');

            $.ajax(url,
                {
                    type: 'GET',
                    data: {"month": month,
                          "year" : year},
                    dataType: "html",
                    success: function (data) {

                        $('#content').empty();
                        $('#content').append(data);

                    },
                    error : function(jqXHR, textStatus, errorThrown){}
                });
});

Пока проблем нет, мое представление, содержащее форму, загружается правильно, и я получаю данные, отправленные с помощью запроса ajax, но когда я заполняю форму и пытаюсь отправить ее, страница обновляется, и ничего не происходит ...

Вот мои 2 контроллера (второй проблемный):

public function saisieAction(Request $request){

        $thisyear = date("Y");

        return $this->render('AvPlatformBundle:Platform:saisie.html.twig',
            array(
                'year' => $thisyear
            ));
}
public function formulaireAction(Request $request){


        $user = $this->getUser();

        $em = $this->getDoctrine()->getManager();
        //$repository = $em->getRepository('AvPlatformBundle:NoteDeFrais');


        // Create the form
        $form = $this->get('form.factory')->createBuilder(FormType::class)
            ->add('ndf', CollectionType::class, array(
                'entry_type' => NoteDeFraisType::class,
                'label' => false,
                'allow_add' => true,
                'allow_delete' => true,
            ))
            ->getForm();

        if ($request->isXmlHttpRequest()){

            $month = $request->get('month');
            $year = $request->get('year');
            $sub_date = $month . '/' . $year;


        }

        if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
            // After debugging, the code inside the if is not executed
            $notesDeFrais = $form['ndf']->getData();


            foreach ($notesDeFrais as $ndf) {
                $ndf->setUser($user);
                $ndf->setMois($sub_date);
                $em->persist($ndf);
            }

            $em->flush();

        }

        return $this->render('AvPlatformBundle:Platform:formulaire.html.twig',
            array(
                'form' => $form->createView()
            ));
    }

Мой вид, содержащий форму:

 <div id="ms_form">

        {{ form_start(form) }}


        <div id="bloc_saisie" class="fieldset">
            <fieldset>


                <div id="form_ndf" class="form_ndf" data-prototype="
                {% filter escape %}
                {{ include('AvPlatformBundle:Platform:prototype.html.twig', { 'form': form.ndf.vars.prototype }) }}
                {% endfilter %}">
                </div>

                <div class="buttons">
                    <button type="button" class="fas fa-plus" id="add_ndf"></button>
                    <input type="submit" class="btn btn-primary btn-lg" id="next_button" >
                </div>


            </fieldset>
        </div>



        {{ form_row(form._token) }}
        {{ form_end(form, {'render_rest': false}) }}


    </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...