/** * Displays a form to create a new Rfq entity. * */ public function newAction() { $entity = new Rfq(); $entity->setCreatedAt(new \DateTime()); $form = $this->createCreateForm($entity); return $this->render('keltanasTrackingBundle:Rfq:new.html.twig', array('entity' => $entity, 'form' => $form->createView())); }
/** * Create and serve adaptive form */ public function serveAction(Request $request, $name) { /** @var EntityManager $em */ $em = $this->getDoctrine()->getManager(); /** @var FormEntity $entity */ $entity = $em->getRepository('keltanasTrackingBundle:Form')->findOneBy(['name' => $name]); if (!$entity) { return new Response(sprintf('Form "%s" not found!', $name)); } $form = $this->createForm(new AdaptiveFormType($entity), null, ['action' => $this->generateUrl('keltanas_tracking_form_serve', ['name' => $name])]); $form->handleRequest($request); if ($form->isSubmitted()) { if ($form->isValid()) { $this->get('keltanas.postman')->sendMessage('Form: ' . $name, 'keltanasTrackingBundle:Form:mail.html.twig', array_merge($form->getData(), ['entity' => $entity]), $request); $history = $em->find('keltanasTrackingBundle:History', $request->cookies->get('tracker_id')); $rfq = new Rfq(); $rfq->setName($form->get('name')->getData()); $rfq->setPhone($form->get('phone')->getData()); $rfq->setForm($entity); $rfq->setHistory($history); $rfq->setCreatedAt(new \DateTime()); $rfq->setIp($this->getRequest()->getClientIp()); $em->persist($rfq); $em->flush(); return new JsonResponse(['status' => 'ok', 'message' => $this->get('translator')->trans('promo.form.message.success')]); } else { $errors = []; /** @var Form $child */ foreach ($form as $child) { foreach ($child->getErrors() as $err) { /** @var FormError $err */ $errors[$child->getName()] = isset($errors[$child->getName()]) ? $errors[$child->getName()] . $err->getMessage() : $err->getMessage(); } } return new JsonResponse(['status' => 'error', 'errors' => $errors, 'message' => $form->getErrorsAsString()]); } } return $this->render($entity->getTemplate(), ['form' => $form->createView(), 'entity' => $entity]); }