提交后保持实体化 CSS 模态表单打开
keep materialize CSS modal form open after submit
我在具体化模态中使用一个表单,但是当我点击提交按钮时,模态将关闭并重定向,我如何重新加载现有的空字段表单而不在提交后关闭模态?
<div class="modal" id="docModal{{applications.id}}" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true" style="height: 500px;">
<div class="modal-dialog modal-full-height modal-right modal-notify modal-info" style="margin: 0;" role="document">
........
{{ form_start(form) }}
<div class="form_group">
<label for="{{form.nom.vars.id}}">Nom</label>
<input type="text" class="form_control" id="{{form.nom.vars.id}}" name="{{form.nom.vars.full_name}}" value="{{form.nom.vars.value}}" required>
{{form_errors(form.nom)}}
{% do form.nom.setRendered %}
</div>
<!-------BTN AJOUT---------->
<input type="submit" class="btn btn-success" onclick="M.toast({html: 'Lien ajouté !', classes: 'rounded'});" value="Ajouter" style="transform: translate(32em);"
id="carto_cartographiebundle_liendocapp_ajouter" name="carto_cartographiebundle_liendocapp[ajouter]">
{% do form.ajouter.setRendered %}
{{form_end(form)}}
</div>
</div>
控制器
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$applications = $em->getRepository('CartoBundle:Application')->findAll();
$lienDocApp = new LienDocApp();
$form=$this->createForm(LienDocAppType::class, $lienDocApp);
$form->handleRequest($request);
if ($form->isSubmitted()&& $form->isValid()){
$em = $this->getDoctrine()->getManager();
$em->persist($lienDocApp);
$em->flush();
return $this->redirectToRoute('carto_accueil');
}
return $this->render('CartoBundle:Accueil:index.html.twig', array(
'applications'=>$applications,
'lienDocApp' => $lienDocApp,
'form' => $form->createView(),
));
}
有两种方法可以做到这一点。
正如 Fabian 在上面提到的那样,您可以使用基于 ajax 的表单提交来刷新模式的内容 - 这应该相对容易做到。
您可以让表单重定向到同一页面,并将一个变量传递回告诉它加载模态的页面。它可能并不完美,因为模式将在页面加载后打开,但有时人们可能更喜欢这样。你可以看看这个问题:
我在具体化模态中使用一个表单,但是当我点击提交按钮时,模态将关闭并重定向,我如何重新加载现有的空字段表单而不在提交后关闭模态?
<div class="modal" id="docModal{{applications.id}}" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true" style="height: 500px;">
<div class="modal-dialog modal-full-height modal-right modal-notify modal-info" style="margin: 0;" role="document">
........
{{ form_start(form) }}
<div class="form_group">
<label for="{{form.nom.vars.id}}">Nom</label>
<input type="text" class="form_control" id="{{form.nom.vars.id}}" name="{{form.nom.vars.full_name}}" value="{{form.nom.vars.value}}" required>
{{form_errors(form.nom)}}
{% do form.nom.setRendered %}
</div>
<!-------BTN AJOUT---------->
<input type="submit" class="btn btn-success" onclick="M.toast({html: 'Lien ajouté !', classes: 'rounded'});" value="Ajouter" style="transform: translate(32em);"
id="carto_cartographiebundle_liendocapp_ajouter" name="carto_cartographiebundle_liendocapp[ajouter]">
{% do form.ajouter.setRendered %}
{{form_end(form)}}
</div>
</div>
控制器
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$applications = $em->getRepository('CartoBundle:Application')->findAll();
$lienDocApp = new LienDocApp();
$form=$this->createForm(LienDocAppType::class, $lienDocApp);
$form->handleRequest($request);
if ($form->isSubmitted()&& $form->isValid()){
$em = $this->getDoctrine()->getManager();
$em->persist($lienDocApp);
$em->flush();
return $this->redirectToRoute('carto_accueil');
}
return $this->render('CartoBundle:Accueil:index.html.twig', array(
'applications'=>$applications,
'lienDocApp' => $lienDocApp,
'form' => $form->createView(),
));
}
有两种方法可以做到这一点。
正如 Fabian 在上面提到的那样,您可以使用基于 ajax 的表单提交来刷新模式的内容 - 这应该相对容易做到。
您可以让表单重定向到同一页面,并将一个变量传递回告诉它加载模态的页面。它可能并不完美,因为模式将在页面加载后打开,但有时人们可能更喜欢这样。你可以看看这个问题: