我想在ajax的单个页面上生成多个表单,如果表单无效,则无法加载下一个表单。
我有3个步骤:
有可能吗?
我尝试提交表单,但我的条件不起作用, 我的注册表格第二次加载到第一个表格下方:
day1
我的控制器:
day2
我的主要观点:
if ($form->isSubmitted() === true && $form->isValid() === true) {}
我的用户表单视图:
/**
* @Route("/inscription", name="akp_inscription", methods={"GET", "POST"})
*
* @Security("is_granted('IS_AUTHENTICATED_ANONYMOUSLY')")
*/
public function inscriptionAction(): Response
{
return $this->render('administration/securite/inscription.html.twig');
}
/**
* @Route("/ajax/inscription-form", name="akp_ajax_inscription", condition="request.isXmlHttpRequest()", methods={"POST"})
*/
public function ajaxInscriptionForm(Request $request): Response
{
$utilisateur = new User();
$form = $this->createForm(UserType::class, $utilisateur);
$form->handleRequest($request);
if ($form->isSubmitted() === true && $form->isValid() === true) {
$emailAlreadyExist = $this->entityManager->getRepository(User::class)->findOneBy([
'email' => $utilisateur->getEmail(),
]);
$usernameAlreadyExist = $this->entityManager->getRepository(User::class)->findOneBy([
'username' => $utilisateur->getUsername(),
]);
if ($emailAlreadyExist !== null) {
$this->addFlash('danger', 'Cet email n\'est pas disponible');
$this->redirectToRoute('akp_inscription');
}
if ($usernameAlreadyExist !== null) {
$this->addFlash('danger', 'Ce pseudo n\'est pas disponible');
$this->redirectToRoute('akp_inscription');
}
$this->entityManager->persist($utilisateur);
$this->entityManager->flush();
return $this->render('administration/securite/ajax/choix_offre_form.html.twig');
}
return $this->render('administration/securite/ajax/inscription_form.html.twig', [
'form' => $form->createView(),
]);
}
/**
* @Route("/ajax/get-choix-offre-form", name="akp_ajax_inscription_choix_offre", condition="request.isXmlHttpRequest()", methods={"POST"})
*/
public function ajaxGetChoixOffreForm(Request $request): Response
{
return $this->render('administration/securite/ajax/choix_offre_form.html.twig');
}
/**
* @Route("/ajax/get-paiement-form", name="akp_ajax_inscription_paiement", condition="request.isXmlHttpRequest()", methods={"POST"})
*/
public function ajaxGetPaiementForm(Request $request): Response
{
return $this->render('administration/securite/ajax/paiement_form.html.twig');
}