Symfony 3.4 Вставка данных с использованием RESTful API без пакета - PullRequest
3 голосов
/ 11 ноября 2019

У меня проблема с вставкой данных в базу данных.

Я могу вставить, используя этот код:

$quote->setSource($data['quote_form[source]']);
$quote->setQuote($data['quote_form[quote]']);

Я хочу вставить данные без добавления определенных полей.

Проблемы:

  1. Проблема в моем первом коде заключается в том, что если я собираюсь добавить новое поле, мне нужно добавлять снова и снова новый набор.
  2. Когда я добавляю if ($form->isSubmitted() && $form->isValid()), он не входит в условие if.

Это код моей функции в контроллере:

    public function createAction(Request $request)
    {
        if ($request->getMethod() === 'POST') {
            $data = json_decode($request->getContent(), true);
            $quote = new Quote();
            $form = $this->createForm(QuoteForm::class, $quote)->submit($data);

            if ($form->isSubmitted() && $form->isValid()) {
                $em = $this->getDoctrine()->getManager();

                // Add our quote to Doctrine so that it can be saved
                $em->persist($quote);

                // Save our quote
                $em->flush();
            } else {
                echo 'not valid';die();
            }

            return new Response('It\'s probably been saved', 201);
        } else {
            throw $this->createNotFoundException();
        }
    }

Для HTML Ajax:

function serializeFormJSON(formArray) {
    var returnArray = {};
    for (var i = 0; i < formArray.length; i++) {
        returnArray[formArray[i]['name']] = formArray[i]['value'];
    }

    return returnArray;
}

var form = $('form[name=quote_form]');
    form.submit(function (e) {
        console.log(JSON.stringify(serializeFormJSON($(this).serializeArray())));
        e.preventDefault();
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify(serializeFormJSON($(this).serializeArray())),
            dataType: 'json',
            success: function(response) {
                console.log(response);
            },
        });
    });

У меня просто есть идея здесь

-> https://andrewadcock.com/a-simple-restful-api-tutorial-with-symfony-3/

-> https://symfonycasts.com/screencast/symfony-rest/form-post

1 Ответ

0 голосов
/ 11 ноября 2019

Похоже, ваша форма недействительна. В объекте формы есть метод

$form->getErrors();

Возвращает коллекцию ошибок проверки. В профилировщике Symfony также есть раздел, связанный с ошибками проверки формы: снимок экрана

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