/** * Creates a new Membership entity. * * @Route("/new/{competitor}", name="membership_new") * @Method({"GET", "POST"}) * @Security("has_role('ROLE_REGISTRATION')") */ public function newAction(Request $request, Competitor $competitor) { $membership = new Membership(); $em = $this->getDoctrine()->getManager(); // find all clubs where the given competitor is _not_ a member $myClubs = $competitor->getMemberships()->map(function ($membership) { return $membership->getClub()->getId(); }); $clubQb = $em->getRepository('AppBundle:Club')->createQueryBuilder('c'); if (0 < count($myClubs)) { $clubQb = $clubQb->where('c.id NOT IN (:clubs)')->setParameter('clubs', $myClubs); } $clubQ = $clubQb->getQuery(); $clubs = $clubQ->getResult(); $form = $this->createForm('AppBundle\\Form\\MembershipType', $membership, array('competitors' => array($competitor), 'clubs' => $clubs)); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em->persist($membership); $em->flush(); $this->addFlash('notice', 'Neue Mitgliedschaft wurde angelegt!'); return $this->redirectToRoute('competitor_show', array('id' => $competitor->getId())); } return $this->render('membership/new.html.twig', array('membership' => $membership, 'person' => $competitor, 'form' => $form->createView())); }
/** * Creates a form to delete a Competitor entity. * * @param Competitor $competitor The Competitor entity * * @return \Symfony\Component\Form\Form The form */ private function createDeleteForm(Competitor $competitor) { return $this->createFormBuilder()->setAction($this->generateUrl('competitor_delete', array('id' => $competitor->getId())))->setMethod('DELETE')->getForm(); }