/** * @param RZ\Roadiz\Core\Entities\CustomForm $customForm * * @return \Symfony\Component\Form\Form */ private function buildDeleteForm(CustomFormAnswer $customFormAnswer) { $builder = $this->createFormBuilder()->add('customFormAnswerId', 'hidden', ['data' => $customFormAnswer->getId(), 'constraints' => [new NotBlank()]]); return $builder->getForm(); }
/** * Add a custom form answer into database. * * @param array $data Data array from POST form * @param RZ\Roadiz\Core\Entities\CustomForm $customForm * @param Doctrine\ORM\EntityManager $em * * @return array $fieldsData */ public static function addCustomFormAnswer(array $data, CustomForm $customForm, EntityManager $em) { $now = new \DateTime('NOW'); $answer = new CustomFormAnswer(); $answer->setIp($data["ip"]); $answer->setSubmittedAt($now); $answer->setCustomForm($customForm); $fieldsData = [["name" => "ip.address", "value" => $data["ip"]], ["name" => "submittedAt", "value" => $now]]; $em->persist($answer); foreach ($customForm->getFields() as $field) { $fieldAttr = new CustomFormFieldAttribute(); $fieldAttr->setCustomFormAnswer($answer); $fieldAttr->setCustomFormField($field); if ($data[$field->getName()] instanceof \DateTime) { $strDate = $data[$field->getName()]->format('Y-m-d H:i:s'); $fieldAttr->setValue($strDate); $fieldsData[] = ["name" => $field->getLabel(), "value" => $strDate]; } else { if (is_array($data[$field->getName()])) { $values = $data[$field->getName()]; $values = array_map('trim', $values); $values = array_map('strip_tags', $values); $displayValues = implode(', ', $values); $fieldAttr->setValue($displayValues); $fieldsData[] = ["name" => $field->getLabel(), "value" => $displayValues]; } else { $fieldAttr->setValue(strip_tags($data[$field->getName()])); $fieldsData[] = ["name" => $field->getLabel(), "value" => $data[$field->getName()]]; } } $em->persist($fieldAttr); } $em->flush(); return $fieldsData; }