SweetAlert2 - Не могу правильно отправить мой jsonResponse при ошибке формы - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь настроить оповещение с помощью SweetAlert2 и включить в него форму.

Для этого я делаю запрос Ax ios, который дает мне рендеринг формы HTML , который я вставлю в предупреждение.

Затем, когда я проверю, я сериализирую введенные данные и проверю форму.

Вернемся в контроллер, если все в порядке, я возвращаю JSON response (200), чтобы сказать, что это хорошо.

Но если форма содержит ошибки, я хочу обновить атрибут 'Html' предупреждения из .catch (), заменив его на новый HTML рендеринг формы, но содержащий ошибки, которые нужно исправить

Итак, у меня есть:

Контроллер. php

/**
     * @Route("/admin/stripe/product/{id}/update/form", name="stripe_admin_product_update_form", options={"expose"=true})
     *
     */
    public function updateProductForm(StripeProduct $product, Request $request)
    {
        $form = $this->createFormBuilder($product)
                    ->setAction($this->generateUrl('stripe_admin_product_update_form', ['id' => $product->getId()]))
                    ->add("name")
                    ->add("unitLabel")
                    ->add("bankStatementLabel")
                    ->getForm();
        $form->handleRequest($request);

        if($form->isSubmitted())
        {
            if($form->isValid())
            {
                return new JsonResponse([
                    "code" => 200,
                    "message" => "C'est bon"
                ]);
            }
            else
            {
                $response = [
                    "form" => $this->render("stripe_admin/product/_form_edit.html.twig", [
                        "form" => $form->createView(),
                    ])->getContent()
                ];

                return new JsonResponse($response, 400);
            }
        }

        $response = [
            "code" => 200,
            "form" => $this->render("stripe_admin/product/_form_edit.html.twig", [
                "form" => $form->createView(),
            ])->getContent()
        ];

        return new JsonResponse($response);
    }

И в моем шаблоне:

шаблон. html .twig

$(".js-update-coupon").click(function(){
            productId = {{product.id}};
            var url = Routing.generate("stripe_admin_product_update_form", {id: productId});
            axios.get(url)
                .then(function(response){
                    var form = response.data.form;
                    Swal.fire({
                        title: "Modifier ?",
                        html: form,
                        icon: "question",
                        showCancelButton: true,
                        showLoaderOnConfirm: true,
                        allowOutsideClick: () => !Swal.isLoading(),
                        preConfirm: function(result)
                        {
                            var data = $("#formUpdate").serialize();

                            return axios({
                                method: 'post',
                                url: url,
                                data: data
                            })
                            .then(function(response) {
                                Swal.fire({
                                    title: 'Modifications enregistrées !',
                                    icon: 'success',

                                    }).then(function() {
                                        document.location.reload(true);
                                    });
                            })
                            .catch(function(response) {
                                console.log(response);
                                var formError = response.data.form;
                                console.log(formError);
                                Swal.fire({
                                    html: formError,
                                })
                            })

                        }
                    });
                });
        })

Проблема на уровне .catch ()

Я не могу обновить атрибут 'Html' оповещения.

И если я сделаю console.log(response);, у меня будет

Error: Request failed with status code 400
    at createError (createError.js:16)
    at settle (settle.js:17)
    at XMLHttpRequest.handleLoad (xhr.js:61)

PS: код 400 м ине. Если я изменю ответ, введя код 500, у меня будет то же самое, но с кодом 500

...