Cant handle/validate ajax request using symfony form

Viewed 17

When i render create request using jquery ajax. I cant handle/validate form using $form->isSubmitted() && $form->isValid() because $form->isSubbmitted() didnt working

My form builder and render view

    public function index(Request $request, EntityManagerInterface $entityManager): Response
    {
        $category = new Category();
        $form = $this->createForm(CategoryFormType::class, $category);
        
        $form->handleRequest($request);
        $list = $entityManager->getRepository(Category::class)->listCategory();

        return $this->render('admin/index/category.html.twig', [
            'categoryForm' => $form->createView(),
            'list'         => $list
        ]);
    }

My ajax

$(document).ready(function(){
    $("#category-add").submit(function(e){
        e.preventDefault();

        var form = $(this);

        $.ajax({
            type: "PUT",
            url: '/api/admin/category',
            data: form.serialize(),
            dataType: 'x-www-form-urlencoded',
            success: function(data)
            {
                console.log(data);
            }
        });
    });
});

My script where i want handle form request

    public function add(Request $request, EntityManagerInterface $entityManager): Response
    {
        $category = new Category();
        $form = $this->createForm(CategoryFormType::class, $category);
        $form->handleRequest($request);


        if ($form->isSubmitted() && $form->isValid()) {
            $category->setCategoryName($form->get('categoryName')->getData());

            $entityManager->persist($category);
            $entityManager->flush();

            return new response('true');        
        }
        return new response('false');
    }
}

My twig template

                                        <form id="category-add">
                                            <input type="hidden" name="csrf_token" value="{{ csrf_token('add-category') }}" />
                                            <input type="text" name="categoryName" placeholder="Nazwa kategorii" class="w-full bg-black border border-grey-one rounded px-4 py-2 focus:outline-none text-sm text-white-two mb-4" />
                                            <button class="w-full uppercase bg-green-three px-6 py-3 rounded-md text-white font-semibold tracking-wide text-xs focus:outline-none" type="submit">Dodaj</button>
                                        </form>
1 Answers
Related