Я пытаюсь настроить оповещение с помощью 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