提交后Symfony2表单刷新同一页面

问题描述:

在我的控制器中,我有:

I have a form whose content is created from a DB.

in my controller i have:

它正确地更新了数据库的信息,但它不会再生成形成更新的数据。而不是isValid()中的返回值,我只需要在当前页面上进行刷新。

/** * @Route("/HR/manage/{projectID}", name="hr_manage") */ public function manageHRAction(Request $request, $projectID) { //here I get all the data from DB and create the form if ($form->isValid()) { //here I do all the relevant changes in the DB return $this->render('HR/show.html.twig', array('hrlist' => $HRsInMyDomain, 'form' => $form->createView(), 'HRs' => $HRsInThisProject, 'project' => $prj, )); } return $this->render('HR/show.html.twig', array('hrlist' => $HRsInMyDomain, 'form' => $form->createView(), 'HRs' => $HRsInThisProject, 'project' => $prj, )); }

我认为这是可能的,并且很容易完成,但是我找不到如何做到这一点:/ / $ /

编辑 - 这里有更多相关的代码:

It updates the info on the DB properly, but it does not build again the form with updated data. Instead of the return inside the "isValid()" I simply need a refresh on the current page.

I assume it's possible and easy to accomplish, but I failed to find how to do it :/

我还包含以下格式的屏幕截图:

EDIT - here comes more relevant code:

如果用户选择添加新的我需要将它保存到数据库(并且这样做是正确的),但是我需要在可用的HR列表中查看它,而不需要用户重新加载页面。

/** * @Route("/HR/manage/{projectID}", name="hr_manage") */ public function manageHRAction(Request $request, $projectID) { $user = $this->container->get('security.context')->getToken()->getUser(); //get current user $em = $this->getDoctrine()->getManager(); //connect to DB $prj = $this->getDoctrine()->getRepository('AppBundle:Project')->findOneById($projectID); [...] // here comes some code to generate the list of $HRsInThisProject and the list of roles ($rolesListForForm) [...] foreach ($HRsInThisProject as $key => $HR) { $form->add('roleOf_'.$key, 'choice', array('choices' => $rolesListForForm, 'required' => true, 'data' => $HR['role'], 'label' => false, )); $form->add('isActive_'.$key, 'choice', array('choices' => [0 => 'Inactive', 1 => 'Active'] , 'required' => true, 'data' => $HR['is_active'], 'label' => false, )); } [...] // here there is some code to get the $HRsInMyDomainForForm [...] $form->add('HRid', 'choice', array('choices' => $HRsInMyDomainForForm,'required' => false, 'placeholder' => 'Choose a resource', 'label' => false, )); $form->add('role', 'choice', array('choices' => $rolesListForForm,'required' => false, 'placeholder' => 'Choose a role', 'label' => false, )); $form->add('save', 'submit', array('label' => 'Save')); $form->handleRequest($request); if ($form->isValid()) { { [...] here there is a huge portion of code that determines if I need to generate a new "event" to be stored, or even multiple events as I can change several form fields at once // If I needed to create the event I persist it (this is inside a foreach) $em->persist($newHREvent); } $em->flush(); return $this->render('HR/show.html.twig', array('projectID' => $prj->getId(), 'hrlist' => $HRsInMyDomain, 'form' => $form->createView(), 'HRs' => $HRsInThisProject, 'project' => $prj, )); } return $this->render('HR/show.html.twig', array('projectID' => $prj->getId(), 'hrlist' => $HRsInMyDomain, 'form' => $form->createView(), 'HRs' => $HRsInThisProject, 'project' => $prj, )); }

I also include a screenshot of the form:

这 - > Request()方法;

return $ this-> redirectToRoute($ request-> get('_ route'),$ request-> query-> all());

$request = $this->getRequest(); return $this->redirectToRoute($request->get('_route'), $request->query->all());

或简单地

or simply

return $this->redirect($request->getUri());