我使用/ seat-number / add路由进行了API调用,以呈现表单并更新数据库。但是当我改变
return $this->render('@AdminTemplates/pages/seat-number-add.html.twig', array(
'form' => $form->createView(),
));
到
return $this->redirectToRoute('seat_number_list');
我在索引页面上的添加按钮不会从索引页面抛出到添加页面。
这是我的整个api调用
public function seatEditAction(Request $request, $id)
{
$edit = $this->getDoctrine()->getRepository(Seats::class)->find($id);
$form = $this->createFormBuilder($edit)
->add('seatNumber', TextType::class, array('label' => 'Seat Number', 'attr' => ['class' => 'form-control']))
->add('save', SubmitType::class, array('label' => 'Update', 'attr' => ['class' => 'btn btn-primary pull-right action-save']))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->flush();
}
return $this->render('@AdminTemplates/pages/seat-number-edit.html.twig', array(
'form' => $form->createView(),
));
}
答案 0 :(得分:0)
要在成功完成表单后重定向,您需要在return
块中放置第二条if
语句。
您编写的操作在普通用户流中被调用两次:第一次显示表单,第二次在表单提交时调用它以验证表单并执行所需的逻辑。 if语句检查这两种情况中的哪一种是当前情况,并提供不同的执行路径。 这就是为什么您需要保留现有的return语句的原因:它的工作是在第一次访问时显示该表单(如果验证失败,则再次执行该操作)。
我还注意到,在同一if
块中,您获得了实体管理器,但是显然没有执行任何业务逻辑。您应该在那儿调用一些服务来实现需要完成的任何业务操作。
答案 1 :(得分:0)
我刚刚添加了两个return语句,它就可以工作。
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->flush();
return $this->redirectToRoute('seat_number_list');
}
return $this->render('@AdminTemplates/pages/seat-number-edit.html.twig', array(
'form' => $form->createView(),
));