使用Axios,我得到了一个用Symfony FormBuilder创建的表单,然后将其显示为模式:
template.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
}
});
});
controller.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);
}
它给了我类似的东西
现在如何使用Axios验证表单? 因此,目标是返回到函数,并且该行:
if($form->isSubmitted() && $form->isValid())
被检测到,以便我可以处理任何错误并进行其余处理
答案 0 :(得分:0)
您必须像处理经典表单提交一样处理请求(理解不是通过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);
}