Symfony 4 - Отправить форму с топором ios? - PullRequest
0 голосов
/ 30 января 2020

С помощью Ax ios я получаю форму, созданную с помощью Symfony FormBuilder, которую затем отображаю в модальном виде:

шаблон. html .twig:

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,
                        allowOutsideClick: () => !Swal.isLoading(),
                        preConfirm: function(result)
                        {
                            //submit form
                        }
                    });
                });

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

 /**
     * @Route("/admin/stripe/product/{id}/update/form", name="stripe_admin_product_update_form", options={"expose"=true})
     *
     */
    public function getUpdateProductForm(StripeProduct $product)
    {
        $form = $this->createFormBuilder($product)
                    ->add("name")
                    ->add("unitLabel")
                    ->add("bankStatementLabel")
                    ->getForm();

        // if($form->isSubmitted() && $form->isValid())
        // {
        //     Traitment
        // }

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

        return new JsonResponse($response);
    }

Это дает мне что-то вроде:

enter image description here

Как теперь я могу проверить форму с помощью Ax ios? Поэтому цель состоит в том, чтобы вернуться к функции и обнаружить строку:

if($form->isSubmitted() && $form->isValid())

, чтобы я мог обработать любые ошибки и выполнить остальную часть обработки

1 Ответ

0 голосов
/ 31 января 2020

Вы должны обрабатывать запрос как отправка формы classi c (понять, не отправлено с AJAX)

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


    $form->handleRequest($request);
     if($form->isSubmitted() && $form->isValid())
     {
         //Traitment
     }

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

    return new JsonResponse($response);
}
...