Cześć, próbuję obsłużyć request, który zawiera dane z formularza, używając ajaxa. Jednak gdy już zrobiłem to zapytanie, nie mogę tego obsłużyć tak jak w normalnym przypadku bez ajaxa używając:
$form->isSubmitted() && $form->isValid()
próbowałem zrobić osobne ify, aby sprawdzić czy działa form->isSubmitted, bez $form->isValid i nie dało to żadnego efektu, bo po prostu te ify się nie uruchamiały.
Mój skrypt renderujący wygląd
public function index(Request $request, EntityManagerInterface $entityManager): Response
{
$category = new Category();
$list = $entityManager->getRepository(Category::class)->listCategory();
return $this->render('admin/index/category.html.twig', [
'categoryForm' => $form->createView(),
'list' => $list
]);
}
mój 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);
}
});
});
});
Skrypt w którym próbuje obsłużyć 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');
}
}
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>