Ejemplo n.º 1
0
 /**
  * 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()));
 }